#include <iostream>
#include <vector>
#include <stack>
#include <algorithm>
using namespace std;
typedef long long ll;
const int MAXN = 500005;
ll w[MAXN], v[MAXN], f[MAXN];
int L[MAXN], R[MAXN], st[MAXN];
int n, top;
ll solve(int u) {
if (!u) return 0;
ll sumL = solve(L[u]);
ll sumR = solve(R[u]);
ll option1 = sumL + sumR;
f[u] = v[u] + max(f[L[u]], f[R[u]]);
return max(option1, f[u]);
}
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
if (!(cin >> n)) return 0;
for (int i = 1; i <= n; i++) cin >> w[i];
for (int i = 1; i <= n; i++) cin >> v[i];
top = 0;
for (int i = 1; i <= n; i++) {
int last = 0;
while (top > 0 && w[st[top]] > w[i]) {
last = st[top--];
}
if (top > 0) R[st[top]] = i;
L[i] = last;
st[++top] = i;
}
cout << solve(st[1]) << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8c3RhY2s+CiNpbmNsdWRlIDxhbGdvcml0aG0+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKdHlwZWRlZiBsb25nIGxvbmcgbGw7Cgpjb25zdCBpbnQgTUFYTiA9IDUwMDAwNTsKbGwgd1tNQVhOXSwgdltNQVhOXSwgZltNQVhOXTsKaW50IExbTUFYTl0sIFJbTUFYTl0sIHN0W01BWE5dOwppbnQgbiwgdG9wOwpsbCBzb2x2ZShpbnQgdSkgewogICAgaWYgKCF1KSByZXR1cm4gMDsKCiAgICBsbCBzdW1MID0gc29sdmUoTFt1XSk7CiAgICBsbCBzdW1SID0gc29sdmUoUlt1XSk7CiAgICBsbCBvcHRpb24xID0gc3VtTCArIHN1bVI7CgogICAgZlt1XSA9IHZbdV0gKyBtYXgoZltMW3VdXSwgZltSW3VdXSk7CgogICAgcmV0dXJuIG1heChvcHRpb24xLCBmW3VdKTsKfQoKaW50IG1haW4oKSB7CiAgICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsKICAgIGNpbi50aWUoTlVMTCk7CgogICAgaWYgKCEoY2luID4+IG4pKSByZXR1cm4gMDsKCiAgICBmb3IgKGludCBpID0gMTsgaSA8PSBuOyBpKyspIGNpbiA+PiB3W2ldOwogICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKSBjaW4gPj4gdltpXTsKICAgIHRvcCA9IDA7CiAgICBmb3IgKGludCBpID0gMTsgaSA8PSBuOyBpKyspIHsKICAgICAgICBpbnQgbGFzdCA9IDA7CiAgICAgICAgd2hpbGUgKHRvcCA+IDAgJiYgd1tzdFt0b3BdXSA+IHdbaV0pIHsKICAgICAgICAgICAgbGFzdCA9IHN0W3RvcC0tXTsKICAgICAgICB9CiAgICAgICAgaWYgKHRvcCA+IDApIFJbc3RbdG9wXV0gPSBpOwogICAgICAgIExbaV0gPSBsYXN0OwogICAgICAgIHN0WysrdG9wXSA9IGk7CiAgICB9CgogICAgY291dCA8PCBzb2x2ZShzdFsxXSkgPDwgZW5kbDsKCiAgICByZXR1cm4gMDsKfQo=