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);

    1. }<br /> }<br />}