#include <bits/stdc++.h>
long long rd() {
  long long da = 0;
  register char ch = 0, w = 1;
  while (ch != '-' && (ch > '9' || ch < '0')) ch = getchar();
  (ch == '-') && (w = -1, ch = getchar());
  while (ch >= '0' && ch <= '9') {
    da = da * 10 + ch - '0';
    ch = getchar();
  }
  return da * w;
}
void P(long long v) {
  if (v < 0) {
    putchar('-');
    v = -v;
  }
  if (v > 9) P(v / 10);
  putchar(v % 10 + '0');
}
struct G {
  long long v, i;
} a[200010];
long long n, w, r[200010], c;
void pr() {
  P(c);
  putchar('\n');
  for (long long i = (1); i <= (c); i++) P(r[i]), putchar(' ');
  putchar('\n');
}
void so() {
  n = rd();
  w = rd();
  long long p = 0;
  c = 0;
  for (long long i = (1); i <= (n); i++) a[i].v = rd(), a[i].i = i;
  std::sort(a + 1, a + n + 1, [](G c, G b) -> bool { return c.v > b.v; });
  for (long long i = (1); i <= (n); i++) {
    if (p + a[i].v <= w) {
      p += a[i].v;
      r[++c] = a[i].i;
    }
    if (p >= (w + 1) / 2 && p <= w) return pr();
  }
  puts("-1");
}
signed main() {
  long long t = rd();
  while (t--) so();
}
