#include <bits/stdc++.h>
using namespace std;
using ll = long long int;
const int MOD = 1e9 + 7;
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  int t;
  cin >> t;
  while (t-- > 0) {
    ll n, W;
    cin >> n >> W;
    ll lower_bound = ceil(W / 2.0);
    ll upper_bound = W;
    vector<pair<ll, ll> > w(n);
    for (int i = 0; i < int(n); i++) {
      ll temp;
      cin >> temp;
      w[i] = {temp, i};
    }
    sort(w.begin(), w.end());
    if (w[0].first > W)
      cout << -1 << '\n';
    else {
      bool found = false;
      for (auto i : w) {
        if (i.first >= lower_bound && i.first <= upper_bound) {
          cout << 1 << '\n';
          cout << i.second + 1 << '\n';
          found = true;
          break;
        }
      }
      if (found) {
        continue;
      } else {
        vector<pair<ll, ll> > new_w;
        for (auto i : w) {
          if (i.first > upper_bound)
            break;
          else
            new_w.push_back(i);
        }
        if (new_w.empty()) {
          cout << -1 << '\n';
        } else {
          vector<ll> prefix;
          prefix.push_back(new_w[0].first);
          for (int i = 1; i < new_w.size(); i++)
            prefix.push_back(prefix[prefix.size() - 1] + new_w[i].first);
          for (int i = 0; i < prefix.size(); i++) {
            if (prefix[i] >= lower_bound && prefix[i] <= upper_bound) {
              cout << i + 1 << '\n';
              for (int j = 0; j <= i; j++) cout << new_w[j].second + 1 << ' ';
              cout << '\n';
              found = true;
              break;
            }
          }
          if (!found) {
            cout << -1 << '\n';
          }
        }
      }
    }
  }
}
