You are given an array a consisting of n positive integers. Find a non-empty subset of its elements such that their sum is even (i.e. divisible by 2) or determine that there is no such subset.

Both the given array and required subset may contain equal values.

Input

The first line contains a single integer t (1 ≤ t ≤ 100), number of test cases to solve. Descriptions of t test cases follow.

A description of each test case consists of two lines. The first line contains a single integer n (1 ≤ n ≤ 100), length of array a.

The second line contains n integers a_1, a_2, …, a_n (1 ≤ a_i ≤ 100), elements of a. The given array a can contain equal values (duplicates).

Output

For each test case output -1 if there is no such subset of elements. Otherwise output positive integer k, number of elements in the required subset. Then output k distinct integers (1 ≤ p_i ≤ n), indexes of the chosen elements. If there are multiple solutions output any of them.

Example

Input


3
3
1 4 3
1
15
2
3 5


Output


1
2
-1
2
1 2

Note

There are three test cases in the example.

In the first test case, you can choose the subset consisting of only the second element. Its sum is 4 and it is even.

In the second test case, there is only one non-empty subset of elements consisting of the first element, however sum in it is odd, so there is no solution.

In the third test case, the subset consisting of all array's elements has even sum.
#include <bits/stdc++.h>
using namespace std;
const int N = (int)100;
const int dx[] = {-1, 0, 1, 0, -1, -1, 1, 1};
const int dy[] = {0, 1, 0, -1, -1, 1, -1, 1};
char dir[] = {'L', 'D', 'R', 'U'};
const long long int mod = (long long int)1e9 + 7;
const long long int inf = 1e18 + 100;
int BIT[100005], n;
long long int prime[17], spf[N];
template <typename T>
T lcm(T a, T b) {
  return a / gcd(a, b) * b;
}
template <typename T>
T min3(T a, T b, T c) {
  return min(a, min(b, c));
}
template <typename T>
T max3(T a, T b, T c) {
  return max(a, max(b, c));
}
bool isVowel(char ch) {
  ch = toupper(ch);
  if (ch == 'A' || ch == 'U' || ch == 'I' || ch == 'O' || ch == 'E')
    return true;
  return false;
}
long long int mInv(long long int a, long long int m) {
  long long int m0 = m;
  long long int y = 0, x = 1;
  if (m == 1) return 0;
  while (a > 1) {
    long long int q = a / m;
    long long int t = m;
    m = a % m, a = t;
    t = y;
    y = x - q * y;
    x = t;
  }
  if (x < 0) x += m0;
  return x;
}
long long int power(long long int x, long long int y) {
  long long int res = 1;
  x = x % mod;
  while (y > 0) {
    if (y & 1) res = (res * x) % mod;
    y = y >> 1;
    x = (x * x) % mod;
  }
  return res;
}
long long int gcd(long long int a, long long int b) {
  if (b == 0) return a;
  return gcd(b, a % b);
}
long long Extendedgcd(long long a, long long b, long long *x, long long *y) {
  if (!a) {
    *x = 0;
    *y = 1;
    return b;
  }
  long long nx, ny;
  long long d = Extendedgcd(b % a, a, &nx, &ny);
  long long k = b / a;
  *y = nx;
  *x = -k * nx + ny;
  return d;
}
void update(int x, int delta) {
  if (!x) {
    BIT[x] += delta;
    return;
  }
  for (; x <= N; x += x & -x) BIT[x] += delta;
}
long long int query(int x) {
  long long int sum = BIT[0];
  for (; x > 0; x -= x & -x) sum += BIT[x];
  return sum;
}
void Sieve() {
  for (int i = 1; i <= N; i++) prime[i] = 1;
  prime[0] = 0;
  prime[1] = 0;
  for (long long int p = 2; p * p <= N; p++) {
    if (prime[p] == 1) {
      for (long long int i = p * p; i <= N; i += p) prime[i] = 0;
    }
  }
  for (int p = 3; p <= N; p++) prime[p] += prime[p - 1];
}
void sieve() {
  spf[1] = -1;
  for (int i = 2; i < N; i++) spf[i] = i;
  for (int i = 4; i < N; i += 2) spf[i] = 2;
  for (long long int i = 3; i * i < N; i++) {
    if (spf[i] == i) {
      for (long long int j = i * i; j < N; j += i)
        if (spf[j] == j) spf[j] = i;
    }
  }
}
struct cmp {
  bool operator()(const pair<int, int> &x, const pair<int, int> &y) const {
    if (x.first != y.first) return x.first < y.first;
    return x.second > y.second;
  }
};
void gInput(int m, vector<int> adj[]) {
  int u, v;
  for (int i = 0; i < m; i++) {
    cin >> u >> v;
    adj[u].push_back(v);
    adj[v].push_back(u);
  }
}
vector<long long int> fac;
void factorial() {
  int N = (int)1e5 + 100;
  fac.resize(N);
  fac[0] = 1;
  for (long long int i = 1; i < N; i++) {
    fac[i] = ((fac[i - 1] % mod) * i) % mod;
  }
}
long long int nCr(long long int n, long long int r) {
  long long int x = fac[n];
  long long int y = fac[r];
  long long int z = fac[n - r];
  long long int pr = ((y % mod) * (z % mod)) % mod;
  pr = mInv(pr, mod);
  long long int ncr = ((x % mod) * (pr % mod)) % mod;
  return ncr;
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  int t = 1;
  cin >> t;
  while (t--) {
    int n;
    cin >> n;
    int a[n];
    for (int i = 0; i < n; i++) {
      cin >> a[i];
    }
    if (n >= 2) {
      if (a[0] % 2 == 0) {
        cout << 1 << "\n";
        cout << 1 << "\n";
        continue;
      } else if (a[1] % 2 == 0) {
        cout << 1 << "\n";
        cout << 2 << "\n";
        continue;
      } else {
        cout << 2 << "\n";
        cout << 1 << " " << 2 << "\n";
      }
    } else {
      if (a[0] % 2 == 0) {
        cout << 1 << "\n";
        cout << 1 << "\n";
      } else
        cout << -1 << "\n";
    }
  }
  return 0;
}
