#include<bits/stdc++.h>
using namespace std;
int n,a[200009];
long long ans,mx[200009];
pair<int,int>h[200009];
void update(int x,long long y) {
	for(int i=x;i<=n;i+=i&-i) mx[i]=max(mx[i],y);
}
long long query(int x) {
	long long maxn=0;
	for(int i=x;i;i-=i&-i) maxn=max(maxn,mx[i]);
	return maxn;
}
int main() {
	scanf("%d",&n);
	for(int i=1;i<=n;i++) {
		scanf("%d",&h[i].first);
		h[i].second=i;
	}
	for(int i=1;i<=n;i++) scanf("%d",a+i);
	sort(h+1,h+n+1);
	for(int i=1;i<=n;i++) {
		long long now=query(h[i].second)+a[h[i].second];
		update(h[i].second,now);
		ans=max(ans,now);
	}
	printf("%lld\n",ans);
	return 0;
}