#include <bits/stdc++.h>
using namespace std;

#define int long long
#define MAXN 200005

int n;
int ft[MAXN];

int maxf(int r){
	int mxf = 0;
	for(; r>=0; r=(r&(r+1))-1){
		mxf = max(mxf, ft[r]);
	}
	return mxf;
}

void upd(int idx, int v){
	for(; idx<n; idx|=(idx+1)){
		ft[idx] = max(ft[idx],v);
	}
}

int32_t main(){
	cin>>n;
	int h[n],a[n];
	for(int i=0; i<n; i++) cin>>h[i];
	for(int i=0; i<n; i++) cin>>a[i];
	pair<int,int> sh[n];
	for(int i=0; i<n; i++) sh[i]=make_pair(h[i],i);
	sort(sh,sh+n);
	int tos[n];
	for(int i=0; i<n; i++){
		tos[sh[i].second] = i;
	}
	memset(ft,0,sizeof(ft));
	int dp[n];
	int an=0;
	for(int i=0; i<n; i++){
		dp[i] = maxf(tos[i])+a[i];
		upd(tos[i],dp[i]);
		an=max(an,dp[i]);
	}
	cout<<an;
}