#include <bits/stdc++.h>

using namespace std;

const int maxn = 2e5+10;

int n;
int a[maxn], h[maxn];
long long int bit[maxn<<1];

long long int query(int pos){
	long long int res = 0;
	for (; pos > 0; pos -= pos&-pos)
		res = max(res, bit[pos]);
	return res;
}

void update(int pos, long long int x){
	for (; pos <= n; pos += pos&-pos)
		bit[pos] = max(bit[pos], x);
}

int main(){
	cin >> n;
	for (int i = 0; i < n; i++)
		scanf("%d", &h[i]);
	for (int i = 0; i < n; i++)
		scanf("%d", &a[i]);

	for (int i = 0; i < n; i++){
		update(h[i], query(h[i]) + a[i]);
	}

	cout << query(n) << endl;
	return 0;
}
