#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
int n;
cin >> n; // jumlah barang
vector<int> berat(n);
vector<int> nilai(n);
// Input berat barang
for (int i = 0; i < n; i++) {
cin >> berat[i];
}
// Input nilai barang
for (int i = 0; i < n; i++) {
cin >> nilai[i];
}
int kapasitas;
cin >> kapasitas; // kapasitas maksimum
// Buat tabel DP
vector<vector<int>> dp(n + 1, vector<int>(kapasitas + 1, 0));
// Proses perhitungan DP
for (int i = 1; i <= n; i++) {
for (int w = 1; w <= kapasitas; w++) {
if (berat[i - 1] <= w) {
dp[i][w] = max(nilai[i - 1] + dp[i - 1][w - berat[i - 1]], dp[i - 1][w]);
} else {
dp[i][w] = dp[i - 1][w];
}
}
}
cout << dp[n][kapasitas] << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8YWxnb3JpdGhtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKaW50IG1haW4oKSB7CiAgICBpbnQgbjsgCiAgICBjaW4gPj4gbjsgLy8ganVtbGFoIGJhcmFuZwoKICAgIHZlY3RvcjxpbnQ+IGJlcmF0KG4pOwogICAgdmVjdG9yPGludD4gbmlsYWkobik7CgogICAgLy8gSW5wdXQgYmVyYXQgYmFyYW5nCiAgICBmb3IgKGludCBpID0gMDsgaSA8IG47IGkrKykgewogICAgICAgIGNpbiA+PiBiZXJhdFtpXTsKICAgIH0KCiAgICAvLyBJbnB1dCBuaWxhaSBiYXJhbmcKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgaSsrKSB7CiAgICAgICAgY2luID4+IG5pbGFpW2ldOwogICAgfQoKICAgIGludCBrYXBhc2l0YXM7CiAgICBjaW4gPj4ga2FwYXNpdGFzOyAvLyBrYXBhc2l0YXMgbWFrc2ltdW0KCiAgICAvLyBCdWF0IHRhYmVsIERQCiAgICB2ZWN0b3I8dmVjdG9yPGludD4+IGRwKG4gKyAxLCB2ZWN0b3I8aW50PihrYXBhc2l0YXMgKyAxLCAwKSk7CgogICAgLy8gUHJvc2VzIHBlcmhpdHVuZ2FuIERQCiAgICBmb3IgKGludCBpID0gMTsgaSA8PSBuOyBpKyspIHsKICAgICAgICBmb3IgKGludCB3ID0gMTsgdyA8PSBrYXBhc2l0YXM7IHcrKykgewogICAgICAgICAgICBpZiAoYmVyYXRbaSAtIDFdIDw9IHcpIHsKICAgICAgICAgICAgICAgIGRwW2ldW3ddID0gbWF4KG5pbGFpW2kgLSAxXSArIGRwW2kgLSAxXVt3IC0gYmVyYXRbaSAtIDFdXSwgZHBbaSAtIDFdW3ddKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGRwW2ldW3ddID0gZHBbaSAtIDFdW3ddOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIGNvdXQgPDwgZHBbbl1ba2FwYXNpdGFzXSA8PCBlbmRsOwogICAgcmV0dXJuIDA7Cn0K