#include <bits/stdc++.h>
using namespace std;
template <typename a>
void SWAP(a &b, a &c) {
  a d = b;
  b = c;
  c = d;
}
long long power(long long a, long long b) {
  long long result = 1;
  while (b) {
    if (b & 1) result = a * result;
    a *= a;
    b >>= 1;
  }
  return result;
}
long long gcd(long long a, long long b) {
  while (b) {
    a = a % b;
    SWAP(a, b);
  }
  return a;
}
long long lcm(long long a, long long b) { return (a * (b / gcd(a, b))); }
long long check_double_equality(double a, double b) {
  double c = (((a - b) > 0) ? (a - b) : (-(a - b)));
  if (c < 1e-9)
    return true;
  else
    return false;
}
int main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  long long t;
  cin >> t;
  while (t--) {
    long long n, W;
    cin >> n >> W;
    long long w[n], result = -1, half = ceil((double)W / 2);
    for (long long i = 0; i < n; i++) {
      cin >> w[i];
      if (half <= w[i] && w[i] <= W) {
        result = i + 1;
      }
    }
    if (result != -1) {
      cout << ("1") << '\n';
      cout << (result) << '\n';
    } else {
      long long a[n], index = 0, total = 0;
      for (long long i = 0; i < n; i++) {
        if (w[i] > W) continue;
        if (total >= half || total > W) break;
        a[index++] = i + 1;
        total += w[i];
      }
      if (total >= half && total <= W) {
        cout << (index) << '\n';
        for (long long i = 0; i < index - 1; i++) {
          cout << a[i] << " ";
        }
        cout << (a[index - 1]) << '\n';
      } else
        cout << ("-1") << '\n';
    }
  }
  return 0;
}
