#include <bits/stdc++.h>
using namespace std;
const unsigned long long int M = 100 * 1005;
long long int sieve[M];
vector<long long int> ans;
bool solve(pair<long long int, long long int> a,
           pair<long long int, long long int> b) {
  return (a.first > b.first);
}
long long int ceil_div(long long int a, long long int b) {
  return (a + b - 1) / b;
}
long long int gcd(long long int a, long long int b) {
  if (b == 0) return a;
  return gcd(b, a % b);
}
long long int dig_sum(long long int n) {
  long long int x = n;
  long long int cnt = 0;
  while (x > 0) {
    long long int a = x % 10;
    cnt = cnt + a;
    x = x / 10;
  }
  return cnt;
}
long long int dig_cnt(long long int n) {
  long long int x = n;
  long long int cnt = 0;
  while (x > 0) {
    long long int a = x % 10;
    cnt++;
    x = x / 10;
  }
  return cnt;
}
bool dig_check(long long int n, long long int num, long long int len) {
  long long int x = n;
  long long int cnt = 0;
  while (x > 0) {
    long long int a = x % 10;
    if (a == num) {
      cnt++;
    }
    x = x / 10;
  }
  if (cnt == len) {
    return true;
  } else {
    return false;
  }
}
void si() {
  long long int i, j;
  for (i = 0; i < M; i++) {
    sieve[i] = 1;
  }
  sieve[0] = sieve[1] = 0;
  for (i = 2; i < M; i++) {
    for (j = i * i; j < M; j = j + i) {
      sieve[j] = 0;
    }
  }
  for (i = 0; i < M; i++) {
    if (sieve[i] == 1) {
      ans.push_back((i));
    }
  }
}
long long int low(vector<long long int> arr, long long int l, long long int r,
                  long long int num) {
  long long int m = 0;
  while (l < r) {
    m = l + (r - l) / 2;
    if (arr[m] < num) {
      l = m + 1;
    } else {
      r = m;
    }
  }
  if (arr[l] >= num) {
    return l;
  } else {
    return arr.size();
  }
}
long long int power(long long int a, long long int b) {
  long long int bb;
  if (b < 0) {
    bb = b;
  } else {
    bb = b;
  }
  long long int ans = 1;
  while (bb > 0) {
    if (bb % 2 == 0) {
      bb = bb / 2;
      a = a * a;
    } else {
      bb = bb - 1;
      ans = ans * a;
    }
  }
  return ans;
}
void fun() {
  long long int n, x, m, j, i, k, a, y, b, w;
  cin >> n >> w;
  vector<pair<long long int, long long int>> vec(n);
  k = 0;
  for (i = 0; i < n; i++) {
    cin >> x;
    vec[i].first = x;
    vec[i].second = i + 1;
    k = k + x;
  }
  sort(vec.begin(), vec.end(), solve);
  vector<long long int> ans;
  b = ceil_div(w, 2);
  if (k < b) {
    cout << "-1\n";
  } else {
    k = 0;
    int f = 0;
    for (i = 0; i < n; i++) {
      if (vec[i].first > (w)) {
        continue;
      } else {
        if (vec[i].first >= b && vec[i].first <= w) {
          ans.push_back(vec[i].second);
          f = 1;
          break;
        }
      }
    }
    if (f == 1) {
      cout << "1\n" << ans[0] << "\n";
    } else {
      int fl = 1;
      vector<long long int> ph;
      k = 0;
      for (i = 0; i < n; i++) {
        if (vec[i].first < b) {
          k = k + vec[i].first;
          ph.push_back(vec[i].second);
        }
        if (k >= b) {
          fl = 0;
          break;
        }
      }
      if (fl == 1) {
        cout << "-1\n";
      } else {
        cout << ph.size() << "\n";
        sort(ph.begin(), ph.end());
        for (i = 0; i < ph.size(); i++) {
          cout << ph[i] << " ";
        }
        cout << "\n";
      }
    }
  }
}
int main() {
  long long int t;
  t = 1;
  cin >> t;
  while (t--) {
    fun();
  }
}
