#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;
}
