#include <bits/stdc++.h>
using namespace std;
const long long M = 1e9 + 7;
long long expo(long long a, long long b) {
  if (b == 0) return 1;
  if (b % 2 == 0) {
    long long ret = expo(a, b / 2);
    ret = (ret * ret) % 1000000007;
    return ret;
  } else {
    long long ret = expo(a, b / 2);
    ret = (ret * ret) % 1000000007;
    ret = (ret * a) % 1000000007;
    return ret;
  }
}
bool is_prime(int x) {
  for (int i = 2; i * i <= x; i++)
    if (x % i == 0) return false;
  return true;
}
long long inf = 1e18;
int main() {
  int t, n;
  long long w;
  cin >> t;
  while (t--) {
    cin >> n >> w;
    vector<pair<int, int> > v;
    int a;
    long long s = 0;
    for (int i = 1; i <= n; i++) {
      cin >> a;
      s += a;
      v.push_back({a, i});
    }
    set<int> m;
    sort(v.begin(), v.end());
    reverse(v.begin(), v.end());
    for (int i = 0; i < n; i++) {
      if ((s > w) && ((s - v[i].first) >= ((w + 1) / 2))) {
        m.insert(v[i].second);
        s -= v[i].first;
      }
    }
    if (s <= w && s >= ((w + 1) / 2)) {
      cout << n - m.size() << endl;
      for (int i = 0; i < n; i++) {
        if (m.find(v[i].second) == m.end()) {
          cout << v[i].second << ' ';
        }
      }
    } else
      cout << -1;
    cout << endl;
  }
}
