#include<bits/stdc++.h>
using namespace std;
int n,max_wt;
int wt[100],val[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];
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;
int max_val=knapsack_Iter(0,max_wt);
cout<<max_val<<endl;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKaW50IG4sbWF4X3d0OwppbnQgd3RbMTAwXSx2YWxbMTAwXTsKaW50IGRwWzEwMF1bMTAwMF07CmludCBrbmFwc2Fja19JdGVyKGludCBpLGludCBhdmFfd3QpCnsKZm9yKGludCBpPTA7aTw9bjtpKyspCnsKZHBbaV1bMF09MDsKfQpmb3IoaW50IGo9MDtqPD1tYXhfd3Q7aisrKQp7CmRwW25dW2pdPTA7Cn0KZm9yKGludCBpPW4tMTtpPj0wO2ktLSkKewpmb3IoaW50IGo9MTtqPD1tYXhfd3Q7aisrKQp7CmlmKGo+PXd0W2ldKQp7CmludCBuaXllPXZhbFtpXStkcFtpKzFdW2pdOwppbnQgbmFuaXllPWRwW2krMV1bal07CgpkcFtpXVtqXT1tYXgobml5ZSxuYW5peWUpOwp9CmVsc2UKewpkcFtpXVtqXT1kcFtpKzFdW2pdOwp9Cn0KfQpyZXR1cm4gZHBbMF1bbWF4X3d0XTsKfQoKaW50IG1haW4oKQp7CmNpbj4+bjsKZm9yKGludCBpPTA7aTxuO2krKykKewpjaW4+Pnd0W2ldOwp9CmZvcihpbnQgaT0wO2k8bjtpKyspCnsKY2luPj52YWxbaV07Cn0KY2luPj5tYXhfd3Q7CgppbnQgbWF4X3ZhbD1rbmFwc2Fja19JdGVyKDAsbWF4X3d0KTsKY291dDw8bWF4X3ZhbDw8ZW5kbDsKfQo=