#include <bits/stdc++.h>
using namespace std;
const long long INF = 0x3f3f3f3f;
const long long LL_INF = 0x3f3f3f3f3f3f3f3f;
const double EPS = 1e-7;
const int N = 1e6 + 10;
long long mod = 1e9 + 7;
const long long MOD = 998244353;
inline long long read() {
  long long f = 1, x = 0;
  char ch = getchar();
  for (; ch > '9' || ch < '0'; ch = getchar())
    if (ch == '-') f = -1;
  for (; ch <= '9' && ch >= '0'; ch = getchar()) x = x * 10 + ch - '0';
  return x * f;
}
struct node {
  long long from, to, cost;
  bool operator<(const node &a) const { return cost > a.cost; }
} edge[N];
vector<node> G[N];
long long n, W, w;
long long a[N];
string s;
int check() {
  long long sum = 0;
  for (int i = 1; i <= n; i++) {
    if (a[i] > W) continue;
    sum += a[i];
  }
  return sum < w;
}
void solve() {
  n = read(), W = read();
  w = (W + 2 - 1) / 2;
  for (int i = 1; i <= n; i++) a[i] = read();
  for (int i = 1; i <= n; i++) {
    if (a[i] >= w && a[i] <= W) {
      printf("1\n");
      printf("%d\n", i);
      return;
    }
  }
  if (check()) {
    printf("-1\n");
    return;
  }
  long long sum = 0, cnt = 0;
  for (int i = 1; i <= n; i++) {
    if (a[i] > W) continue;
    sum += a[i];
    cnt++;
    if (sum >= w) {
      printf("%lld\n", cnt);
      for (int j = 1; j <= i; j++) {
        if (a[j] > W) continue;
        printf("%d ", j);
      }
      printf("\n");
      return;
    }
  }
}
int main() {
  int t = read();
  while (t--) solve();
}
