#include <bits/stdc++.h>
using namespace std;
void testCase() {
int n, m;
cin >> n >> m;
vector<int> w(n + 1);
vector<int> v(n + 1);
for (int i = 1; i <= n; ++i) {
cin >> w[i];
}
for (int i = 1; i <= n; ++i) {
cin >> v[i];
}
vector<vector<int>> f(n + 1, vector<int>(m + 1));
for (int i = 1; i <= n; ++i) {
for (int j = 1; j <= m; ++j) {
if (j >= w[i])
f[i][j] = max(f[i - 1][j], f[i - 1][j - w[i]] + v[i]);
else
f[i][j] = f[i - 1][j];
}
}
cout << f[n][m];
}
int main() {
int T = 1; cin >> T;
while (T--) {
testCase();
cout << "\n";
}
return 0;
}
CiNpbmNsdWRlIDxiaXRzL3N0ZGMrKy5oPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKdm9pZCB0ZXN0Q2FzZSgpIHsKICAgIGludCBuLCBtOwogICAgY2luID4+IG4gPj4gbTsKICAgIHZlY3RvcjxpbnQ+IHcobiArIDEpOwogICAgdmVjdG9yPGludD4gdihuICsgMSk7CiAgICBmb3IgKGludCBpID0gMTsgaSA8PSBuOyArK2kpIHsKICAgICAgICBjaW4gPj4gd1tpXTsKICAgIH0KICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IG47ICsraSkgewogICAgICAgIGNpbiA+PiB2W2ldOwogICAgfQogICAgCiAgICB2ZWN0b3I8dmVjdG9yPGludD4+IGYobiArIDEsIHZlY3RvcjxpbnQ+KG0gKyAxKSk7CiAgICBmb3IgKGludCBpID0gMTsgaSA8PSBuOyArK2kpIHsKICAgICAgICBmb3IgKGludCBqID0gMTsgaiA8PSBtOyArK2opIHsKICAgICAgICAgICAgaWYgKGogPj0gd1tpXSkKICAgICAgICAgICAgICAgIGZbaV1bal0gPSBtYXgoZltpIC0gMV1bal0sIGZbaSAtIDFdW2ogLSB3W2ldXSArIHZbaV0pOwogICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICBmW2ldW2pdID0gZltpIC0gMV1bal07CiAgICAgICAgfQogICAgfQogICAgY291dCA8PCBmW25dW21dOwp9CgppbnQgbWFpbigpIHsKIAoKICAgIGludCBUID0gMTsgY2luID4+IFQ7CiAgICB3aGlsZSAoVC0tKSB7CiAgICAgICAgdGVzdENhc2UoKTsKICAgICAgICBjb3V0IDw8ICJcbiI7CiAgICB9CiAgICByZXR1cm4gMDsKfQ==