#include <bits/stdc++.h>
using namespace std;
const int inf = 0x3f3f3f3f;
const long long INF = 0x3f3f3f3f3f3f3f3fll;
inline int read() {
  int ret = 0, sgn = 1;
  char ch = getchar();
  while (ch < '0' || ch > '9') {
    if (ch == '-') sgn = -1;
    ch = getchar();
  }
  while (ch >= '0' && ch <= '9') {
    ret = ret * 10 + ch - '0';
    ch = getchar();
  }
  return ret * sgn;
}
struct MN {
  int a;
  int b;
  bool operator<(const MN ot) const { return this->b < ot.b; }
};
const int maxn = 2e5 + 10;
MN in[maxn];
int main() {
  std::ios::sync_with_stdio(false);
  std::cin.tie(0);
  int t;
  cin >> t;
  while (t--) {
    int n;
    long long W;
    cin >> n >> W;
    long long hW = (W + 1) / 2;
    int tmp;
    for (int i = 1; i <= n; ++i) {
      cin >> tmp;
      in[i] = MN{i, tmp};
    }
    sort(in + 1, in + n + 1);
    long long sum = 0;
    int pos = -1;
    for (int i = 1; i <= n; ++i) {
      sum += in[i].b;
      if (sum >= hW) {
        pos = i;
        break;
      }
    }
    if (pos == -1) {
      cout << -1 << endl;
      continue;
    }
    if (sum <= W) {
      cout << pos << endl;
      for (int i = 1; i <= pos; ++i) {
        cout << in[i].a << ' ';
      }
      cout << endl;
      continue;
    }
    int p1 = 1, p2 = pos;
    while (p2 <= n && p1 <= p2) {
      if (sum > W) {
        sum -= in[p1].b;
        p1 += 1;
      } else if (sum < hW) {
        p2 += 1;
        sum += in[p2].b;
      } else if (sum <= W && sum >= hW) {
        break;
      }
    }
    if (sum <= W && sum >= hW) {
      cout << p2 - p1 + 1 << endl;
      for (int i = p1; i <= p2; ++i) {
        cout << in[i].a << ' ';
      }
      cout << endl;
    } else {
      cout << -1 << endl;
    }
  }
  return 0;
}
