#include<bits/stdc++.h>
using namespace std;
int n,max_wt;
int val[100],wt[100];
int dp[100][1000];
int knapsack_Iter(int i,int ava_wt)
{
for(int i=0;i<=n;i++)
{
dp[i][0]=0;
}
for(int j=0;j<=max_wt;j++)
{
dp[n][j]=0;
}
for(int i=n-1;i>=0;i--)
{
for(int j=1;j<=max_wt;j++)
{
if(j>=wt[i])
{
int niye=val[i]+dp[i+1][j-wt[i]];
int naniye=dp[i+1][j];
dp[i][j]=max(niye,naniye);
}
else
{
dp[i][j]=dp[i+1][j];
}
}
}
return dp[0][max_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=knapsack_Iter(0,max_wt);
cout<<max<<endl;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKaW50IG4sbWF4X3d0OwppbnQgdmFsWzEwMF0sd3RbMTAwXTsKaW50IGRwWzEwMF1bMTAwMF07CmludCBrbmFwc2Fja19JdGVyKGludCBpLGludCBhdmFfd3QpCnsKZm9yKGludCBpPTA7aTw9bjtpKyspCnsKZHBbaV1bMF09MDsKfQpmb3IoaW50IGo9MDtqPD1tYXhfd3Q7aisrKQp7CmRwW25dW2pdPTA7Cn0KCmZvcihpbnQgaT1uLTE7aT49MDtpLS0pCnsKZm9yKGludCBqPTE7ajw9bWF4X3d0O2orKykKewppZihqPj13dFtpXSkKewppbnQgbml5ZT12YWxbaV0rZHBbaSsxXVtqLXd0W2ldXTsKaW50IG5hbml5ZT1kcFtpKzFdW2pdOwpkcFtpXVtqXT1tYXgobml5ZSxuYW5peWUpOwp9CmVsc2UKewpkcFtpXVtqXT1kcFtpKzFdW2pdOwp9Cn0KfQpyZXR1cm4gZHBbMF1bbWF4X3d0XTsKfQppbnQgbWFpbigpCnsKCmNpbj4+bjsKZm9yKGludCBpPTA7aTxuO2krKykKewpjaW4+Pnd0W2ldOwp9CmZvcihpbnQgaT0wO2k8bjtpKyspCnsKY2luPj52YWxbaV07Cn0KY2luPj5tYXhfd3Q7CmZvcihpbnQgaT0wO2k8PW47aSsrKQp7CmZvcihpbnQgaj0wO2o8PW1heF93dDtqKyspCnsKZHBbaV1bal09LTE7Cn0KfQoKaW50IG1heD1rbmFwc2Fja19JdGVyKDAsbWF4X3d0KTsKY291dDw8bWF4PDxlbmRsOwp9