#include <iostream>#include <string.h>#include <algorithm>// 01背包问题(竟然吃了个 PE ……)// 方程是 f[j] = max(f[j], f[j - w[i]] + v[i])constint SIZE = 1010;
int w[SIZE];
int v[SIZE];
int f[SIZE];
int main() {
int t;
std::cin >> t;
while (t--) {
memset(w, 0, sizeof(w));
memset(v, 0, sizeof(v));
memset(f, 0, sizeof(f));
int n, m;
std::cin >> n >> m;
for (int i = 1; i <= n; i++)
std::cin >> v[i];
for (int i = 1; i <= n; i++)
std::cin >> w[i];
for (int i = 1; i <= n; i++)
for (int j = m; j >= 0; j--)
if (j >= w[i])
f[j] = std::max(f[j], f[j - w[i]] + v[i]);
std::cout << f[m] << std::endl;
}
return0;
}