package 技法.背包.零一背包;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
/*
Bone Collector HDU - 2602
*/
_public class Main {
static int _N,V;
static int dp[][];
static int value[],v[];
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int T=Integer.parseInt(br.readLine());
StringTokenizer st;
for (int t = 0; t < T ; t++) {
st=new StringTokenizer(br.readLine());
N=Integer.parseInt(st.nextToken());
V=Integer.parseInt(st.nextToken());
dp=new int[N+1][V+1];
value=new int[N+1];
v=new int[N+1];
st=new StringTokenizer(br.readLine());
for (int i = 1; i <=N ; i++) {
value[i]=Integer.parseInt(st.nextToken());
}
st=new StringTokenizer(br.readLine());
for (int i = 1; i <=N ; i++) {
v[i]=Integer.parseInt(st.nextToken());
}
for (int i = 1; i <=N ; i++) {
for (int j = 0; j <=V ; j++) {
if(j-v[i]>=0) dp[i][j]=Math.max(dp[i-1][j],dp[i-1][j-v[i]]+value[i]);
else dp[i][j]=dp[i-1][j];
}
}
int ans=0;
for (int i = 0; i <=V ; i++) {
ans=Math.max(ans,dp[N][i]);
}
System.out.println(ans);
}<br /> }<br />}
