#include <stdio.h>
#include <string>
using namespace std;
int dp[1002][1002];
int p[1024];
int w[1024];
int main()
{
int n,v;
int t;
scanf("%d",&t);
while(t--)
{
scanf("%d%d",&n,&v);
for(int i=1; i<=n; i++)
scanf("%d",&p[i]);
for(int i=1; i<=n; i++)
scanf("%d",&w[i]);
memset(dp, 0, sizeof(dp) );
for(int i=1; i<=n; i++) /*如果本物品的价值加上背包剩下的空间能放的物品的价值*/
for(int j=0; j<=v; j++) /*大于上一次选择的最佳方案则更新c[i][j]*/
{
if( j >= w[i]) //这里j要从0开始,不然就wa。有的物品质量为0
{
if(dp[i-1][j-w[i]]+p[i] > dp[i-1][j])
dp[i][j] = dp[i-1][j-w[i]] +p[i];
else
dp[i][j] = dp[i-1][j];
}
else
dp[i][j] = dp[i-1][j];
}
printf("%d\n",dp[n][v]);
}
return 1;
}