#include <iostream>
#include <vector>
using namespace std;
int main() {
int n;
cin >> n; // jumlah item
vector<int> weight(n), value(n);
for (int i = 0; i < n; i++) cin >> weight[i];
for (int i = 0; i < n; i++) cin >> value[i];
int W;
cin >> W;
vector<vector<int>> dp(n + 1, vector<int>(W + 1, 0));
for (int i = 1; i <= n; i++) {
for (int w = 1; w <= W; w++) {
if (weight[i - 1] <= w)
dp[i][w] = max(value[i - 1] + dp[i - 1][w - weight[i - 1]], dp[i - 1][w]);
else
dp[i][w] = dp[i - 1][w];
}
}
cout << dp[n][W]; // hasil akhir
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKaW50IG1haW4oKSB7CiAgICBpbnQgbjsKICAgIGNpbiA+PiBuOyAvLyBqdW1sYWggaXRlbQogICAgdmVjdG9yPGludD4gd2VpZ2h0KG4pLCB2YWx1ZShuKTsKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgaSsrKSBjaW4gPj4gd2VpZ2h0W2ldOwogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspIGNpbiA+PiB2YWx1ZVtpXTsKICAgIGludCBXOwogICAgY2luID4+IFc7CgogICAgdmVjdG9yPHZlY3RvcjxpbnQ+PiBkcChuICsgMSwgdmVjdG9yPGludD4oVyArIDEsIDApKTsKCiAgICBmb3IgKGludCBpID0gMTsgaSA8PSBuOyBpKyspIHsKICAgICAgICBmb3IgKGludCB3ID0gMTsgdyA8PSBXOyB3KyspIHsKICAgICAgICAgICAgaWYgKHdlaWdodFtpIC0gMV0gPD0gdykKICAgICAgICAgICAgICAgIGRwW2ldW3ddID0gbWF4KHZhbHVlW2kgLSAxXSArIGRwW2kgLSAxXVt3IC0gd2VpZ2h0W2kgLSAxXV0sIGRwW2kgLSAxXVt3XSk7CiAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgIGRwW2ldW3ddID0gZHBbaSAtIDFdW3ddOwogICAgICAgIH0KICAgIH0KCiAgICBjb3V0IDw8IGRwW25dW1ddOyAvLyBoYXNpbCBha2hpcgogICAgcmV0dXJuIDA7Cn0K