#include <bits/stdc++.h>
#define ll long long
using namespace std;
const int N = 2e5 + 5, mod = 1e9 + 7, LG = 20;
vector <vector <array <int, 3>>> dp;
int n, h, d[105], s[105], id[105];
vector <int> ans;

array <int, 3> solve(int idx, int time) {
    if (time > h)
        return {(int)-1e9, (int)1e9, (int)1e9};
    if (idx == n || time >= h)
        return {0, 0, 0};
    auto &ret = dp[idx][time];
    if (~ret[0])
        return ret;
    ret = solve(idx + 1, time);

    auto res = solve(idx + 1, time + d[idx]);
    res[0] += s[idx];
    res[1] += d[idx] + time;
    res[2] = id[idx];
    if (ret[0] == res[0]) {
        if (ret[1] > res[1])
            ret = res;
        else if (ret[1] == res[1]) {
            if (ret[2] > res[2])
                ret = res;
        }
    }
    else if (res[0] > ret[0])
        ret = res;
    return ret;

}

void build(int idx, int time) {
    if (time > h)
        return;
    if (idx == n || time >= h)
        return;
    auto &ret = dp[idx][time];

    if (ret == solve(idx + 1, time)) {
        build(idx + 1, time);
        return;
    }
    ans.push_back(id[idx]);
    build(idx + 1, time + d[idx]);
}
void burn() {
    cin >> n >> h;
    h *= 60;
    vector <array <int, 3>> vec(n);
    for (int i = 0; i < n; i++)
        cin >> d[i], d[i] *= 2, d[i] /= 100, vec[i][0] = d[i];
    for (int i = 0; i < n; i++)
        cin >> s[i], vec[i][2] = s[i], vec[i][1] = i+1;
    sort(vec.begin(), vec.end());

    for (int i = 0; i < n; i++)
        d[i] = vec[i][0], s[i] = vec[i][2], id[i] = vec[i][1];
    array <int, 3> tmp = {-1, -1, -1};
    dp = vector <vector <array <int, 3>>> (n, vector <array <int, 3>> (h, tmp));

    auto res = solve(0, 0);
    build(0, 0);

    for (auto &a : ans)
        cout << a << ' ';
    cout << '\n';
    ans.clear();


}

signed main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);
    int t = 1;
    cin >> t;
    while(t--)
        burn();
}