#include <bits/stdc++.h>
using namespace std;
const int N = 1e5;
struct myfun {
 public:
  bool operator()(pair<double, double> a, pair<double, double> b) {
    return a.second / a.first <= b.second / b.first;
  }
};
void A() {
  int t;
  cin >> t;
  for (int l = 0; l < t; l++) {
    int p;
    cin >> p;
    cout << p << '\n';
    for (int i = 1; i <= p; i++) {
      cout << i << " ";
    }
    cout << '\n';
  }
}
void B() {
  int y, m, n, p;
  cin >> y;
  for (int t = 0; t < y; t++) {
    cin >> n >> m;
    int neg = 0;
    int sum = 0;
    int mneg = -200;
    int mpos = 200;
    int z = 0;
    for (int i = 0; i < n; i++) {
      for (int j = 0; j < m; j++) {
        cin >> p;
        if (p < 0) {
          neg++;
          sum -= p;
          mneg = max(mneg, p);
        } else {
          sum += p;
          mpos = min(mpos, p);
        }
        if (p == 0) z++;
      }
    }
    if (neg % 2 == 0 || z) {
      cout << sum << '\n';
    } else {
      if (mpos < (-mneg)) {
        sum -= (2 * mpos);
      } else
        sum += 2 * mneg;
      cout << sum << '\n';
    }
  }
}
void C() {
  int t;
  cin >> t;
  long long n, w;
  for (int l = 0; l < t; l++) {
    cin >> n >> w;
    long long p;
    vector<pair<long long, int> > vec(n);
    for (int i = 0; i < n; i++) {
      cin >> p;
      vec[i].first = p;
      vec[i].second = i + 1;
    }
    sort(vec.begin(), vec.end());
    vector<int> ans;
    long long sum = 0;
    for (int i = n - 1; i >= 0; i--) {
      if (vec[i].first > w) continue;
      if (sum + vec[i].first <= w) {
        sum += vec[i].first;
        ans.push_back(vec[i].second);
      }
      if (sum >= (w + 1) / 2 && sum <= w) break;
    }
    if (sum >= (w + 1) / 2 && sum <= w) {
      cout << ans.size() << '\n';
      for (int i = 0; i < ans.size(); i++) {
        cout << ans[i] << " ";
      }
      cout << '\n';
    } else
      cout << "-1\n";
  }
}
void C2() {}
void D1() {}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  C();
  return 0;
}
