#include <bits/stdc++.h>
using namespace std;
const int MOD = 1e9 + 7;
const int MX = 2e2 + 5;
const long long INF = 1e18;
const long double PI = 4 * atan((long double)1);
const int dx[4] = {0, 1, 0, -1}, dy[4] = {1, 0, -1, 0};
namespace io {
void setIn(string second) { freopen(second.c_str(), "r", stdin); }
void setOut(string second) { freopen(second.c_str(), "w", stdout); }
void setIO(string second = "") {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  if ((int)second.size()) {
    setIn(second + ".in");
    setOut(second + ".out");
  }
}
}  // namespace io
using namespace io;
namespace input {
template <class T>
void re(complex<T>& x);
template <class T1, class T2>
void re(pair<T1, T2>& p);
template <class T>
void re(vector<T>& a);
template <class T, size_t SZ>
void re(array<T, SZ>& a);
template <class T>
void re(T& x) {
  cin >> x;
}
void re(double& x) {
  string t;
  re(t);
  x = stod(t);
}
void re(long double& x) {
  string t;
  re(t);
  x = stold(t);
}
template <class Arg, class... Args>
void re(Arg& first, Args&... rest) {
  re(first);
  re(rest...);
}
template <class T>
void re(complex<T>& x) {
  T a, b;
  re(a, b);
  x = cd(a, b);
}
template <class T1, class T2>
void re(pair<T1, T2>& p) {
  re(p.first, p.second);
}
template <class T>
void re(vector<T>& a) {
  for (int i = (0); i < ((int)a.size()); ++i) re(a[i]);
}
template <class T, size_t SZ>
void re(array<T, SZ>& a) {
  for (int i = (0); i < (SZ); ++i) re(a[i]);
}
}  // namespace input
namespace output {
template <class T1, class T2>
void pr(const pair<T1, T2>& x);
template <class T, size_t SZ>
void pr(const array<T, SZ>& x);
template <class T>
void pr(const vector<T>& x);
template <class T>
void pr(const set<T>& x);
template <class T1, class T2>
void pr(const map<T1, T2>& x);
template <class T>
void pr(const T& x) {
  cout << x;
}
template <class Arg, class... Args>
void pr(const Arg& first, const Args&... rest) {
  pr(first);
  pr(rest...);
}
template <class T1, class T2>
void pr(const pair<T1, T2>& x) {
  pr("{", x.first, ", ", x.second, "}");
}
template <class T>
void prContain(const T& x) {
  pr("{");
  bool fst = 1;
  for (const auto& a : x) pr(!fst ? ", " : "", a), fst = 0;
  pr("}");
}
template <class T, size_t SZ>
void pr(const array<T, SZ>& x) {
  prContain(x);
}
template <class T>
void pr(const vector<T>& x) {
  prContain(x);
}
template <class T>
void pr(const set<T>& x) {
  prContain(x);
}
template <class T1, class T2>
void pr(const map<T1, T2>& x) {
  prContain(x);
}
void ps() { pr("\n"); }
template <class Arg>
void ps(const Arg& first) {
  pr(first);
  ps();
}
template <class Arg, class... Args>
void ps(const Arg& first, const Args&... rest) {
  pr(first, " ");
  ps(rest...);
}
}  // namespace output
using namespace output;
using namespace input;
long long add(long long a, long long b) {
  a += b;
  if (a >= MOD) {
    a -= MOD;
  }
  return a;
}
long long sub(long long a, long long b) {
  a -= b;
  if (a < 0) {
    a += MOD;
  }
  return a;
}
long long mul(long long a, long long b) { return (a * b) % MOD; }
void add_self(long long& a, long long b) { a = add(a, b); }
void sub_self(long long& a, long long b) { a = sub(a, b); }
void mul_self(long long& a, long long b) { a = mul(a, b); }
int main() {
  setIO();
  long long t;
  re(t);
  for (int ii = (0); ii < (t); ++ii) {
    long long N, W;
    re(N, W);
    vector<long long> v;
    for (int i = (0); i < (N); ++i) {
      long long a;
      re(a);
      v.push_back(a);
    }
    bool done = false;
    for (int i = (0); i < ((int)v.size()); ++i) {
      if (v[i] >= (W + 1) / 2 && v[i] <= W) {
        ps(1);
        ps(i + 1);
        done = true;
        break;
      }
    }
    if (done) {
      continue;
    }
    long long lind = -1;
    long long cs = 0;
    long long ignore = 0;
    for (int i = (0); i < ((int)v.size()); ++i) {
      if (v[i] > W) {
        ignore++;
        continue;
      }
      cs += v[i];
      if (cs >= (W + 1) / 2 && cs <= W) {
        lind = i;
        break;
      }
    }
    if (lind == -1) {
      ps(-1);
      continue;
    }
    ps(lind + 1 - ignore);
    for (int i = (0); i < (lind + 1); ++i) {
      if (v[i] > W) {
        continue;
      }
      cout << i + 1 << " ";
    }
    ps();
  }
  return 0;
}
