HDU-2639
#include<bits/stdc++.h>
using namespace std;
#define MAXN 1005
#define ll long long
ll w[MAXN],v[MAXN];
ll dp[MAXN][MAXN];
int main(){
int pa;
cin>>pa;
while(pa--){
int n,m,k;
cin>>n>>m>>k;
memset(dp,0,sizeof(dp));
for(int i=1;i<=n;i++){
scanf("%lld",&v[i]);
}
for(int i=1;i<=n;i++){
scanf("%lld",&w[i]);
}
for(int i=1;i<=n;i++){
for(int j=m;j>=w[i];j--){
set<int> st;
for(int l=1;l<=k;l++){
st.insert(dp[j][l]);
st.insert(dp[j-w[i]][l]+v[i]);
}
int ts=0;
set<int>::iterator ite=st.end();
ite--;
for(;;ite--){
dp[j][++ts]=*ite;
if(ts>k)dp[j][ts]=0;
if(ite==st.begin())break;
}
}
}
cout<<dp[m][k]<<endl;
}
return 0;
}