#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
const int maxn = 10100;
int value[maxn];
int vol[maxn];
int dp[maxn][maxn];
int DP[maxn];
int main(){
int n,m;
while(scanf("%d",&n)!= -1){
memset(dp,0,sizeof(dp));
for(int i=1;i<=n;i++)
scanf("%d",&value[i]);
for(int i=1;i<=n;i++)
scanf("%d",&vol[i]);
scanf("%d", &m);
for(int i=1;i<=n;i++){
for(int j=0;j<=m;j++){ //vol容量可能为0; j 的顺序无所谓
if(j>=vol[i])
dp[i][j] = max(dp[i-1][j] ,
dp[i-1][j-vol[i]] + value[i]);
else
dp[i][j] = dp[i-1][j];
}
}
printf("%d\n",dp[n][m]);
}
return 0;
}