#include<bits/stdc++.h>
using namespace std;
int n,max_wt;
int wt[100],val[100];
int dp[100][1000];
int knapsack(int i,int ava_wt)
{
if(ava_wt==0)
return 0;
if(i==n)
return 0;
if(dp[i][ava_wt]!=-1)
return dp[i][ava_wt];
if(ava_wt>=wt[i])
{
int niye=val[i]+knapsack(i+1,ava_wt-wt[i]);
int naniye=knapsack(i+1,ava_wt);
return max(niye,naniye);
}
else
{
return knapsack(i+1,ava_wt);
}
}
int main()
{
cin>>n;
for(int i=0;i<n;i++)
{
cin>>wt[i];
}
for(int i=0;i<n;i++)
{
cin>>val[i];
}
cin>>max_wt;
for(int i=0;i<n;i++)
{
for(int j=0;j<=max_wt;j++)
{
dp[i][j]=-1;
}
}
int max_val=knapsack(0,max_wt);
cout<<max_val<<endl;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKaW50IG4sbWF4X3d0OwppbnQgd3RbMTAwXSx2YWxbMTAwXTsKaW50IGRwWzEwMF1bMTAwMF07CmludCBrbmFwc2FjayhpbnQgaSxpbnQgYXZhX3d0KQp7CmlmKGF2YV93dD09MCkKcmV0dXJuIDA7CmlmKGk9PW4pCnJldHVybiAwOwppZihkcFtpXVthdmFfd3RdIT0tMSkKcmV0dXJuIGRwW2ldW2F2YV93dF07CmlmKGF2YV93dD49d3RbaV0pCnsKaW50IG5peWU9dmFsW2ldK2tuYXBzYWNrKGkrMSxhdmFfd3Qtd3RbaV0pOwppbnQgbmFuaXllPWtuYXBzYWNrKGkrMSxhdmFfd3QpOwpyZXR1cm4gbWF4KG5peWUsbmFuaXllKTsKfQplbHNlCnsKcmV0dXJuIGtuYXBzYWNrKGkrMSxhdmFfd3QpOwp9Cn0KCgppbnQgbWFpbigpCnsKY2luPj5uOwpmb3IoaW50IGk9MDtpPG47aSsrKQp7CmNpbj4+d3RbaV07Cn0KZm9yKGludCBpPTA7aTxuO2krKykKewpjaW4+PnZhbFtpXTsKfQpjaW4+Pm1heF93dDsKZm9yKGludCBpPTA7aTxuO2krKykKewpmb3IoaW50IGo9MDtqPD1tYXhfd3Q7aisrKQp7CmRwW2ldW2pdPS0xOwp9Cn0KaW50IG1heF92YWw9a25hcHNhY2soMCxtYXhfd3QpOwpjb3V0PDxtYXhfdmFsPDxlbmRsOwp9Cg==