#include <bits/stdc++.h>
using namespace std;
const int inf = INT_MAX;
const int mod = 1e9 + 7;
const int N = 2e5 + 5;
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  long long t;
  cin >> t;
  while (t--) {
    long long n, w;
    cin >> n >> w;
    long long a[n];
    vector<pair<long long, long long>> v;
    long long mn = inf, mx = 0, sum = 0;
    long long s = 0;
    for (long long i = 0; i < n; i++) {
      cin >> a[i];
      mn = min(mn, a[i]);
      sum += a[i];
      mx = max(mx, a[i]);
      v.push_back({a[i], i + 1});
      if (a[i] >= (w + 1) / 2 and a[i] <= w) {
        s = i + 1;
      }
    };
    if (s) {
      cout << 1 << "\n";
      cout << s << "\n";
      continue;
    }
    if (mn > w || sum < (w + 1) / 2) {
      cout << -1 << "\n";
      continue;
    }
    queue<pair<long long, long long>> ans;
    sort(v.begin(), v.end());
    long long cs = 0;
    long long got = 0;
    for (long long i = 0; i < n; i++) {
      cs += v[i].first;
      ans.push({v[i].first, v[i].second});
      if (cs >= (w + 1) / 2 and cs <= w) {
        got = 1;
        break;
      }
      if (cs > w) {
        break;
      }
    }
    if (got) {
      cout << ans.size() << "\n";
      while (!ans.empty()) {
        cout << (ans.front()).second << " ";
        ans.pop();
      }
      cout << "\n";
      continue;
    }
    long long nw = 0;
    while (1) {
      if (ans.empty()) break;
      long long x = (ans.front()).first;
      cs -= x;
      ans.pop();
      if (cs >= (w + 1) / 2 and cs <= w) {
        nw = 1;
        break;
      }
      if (cs < (w + 1) / 2) {
        break;
      }
    }
    if (nw) {
      cout << ans.size() << "\n";
      while (!ans.empty()) {
        cout << (ans.front()).second << " ";
        ans.pop();
      }
      cout << "\n";
      continue;
    }
    cout << "-1"
         << "\n";
  }
  return 0;
}
