#include <bits/stdc++.h>
#define int long long
using namespace std;
const int maxn = 2e5 + 10;
int n;
int a[maxn], b[maxn];
pair<int,int>  t[maxn * 4];
void build(int v, int tl, int tr){
	if(tl ==  tr){
		t[v] = {a[tl], tl};
		return;
	}
	int tm = (tl + tr) / 2;
	build(v * 2, tl, tm);
	build(v * 2 + 1, tm + 1, tr);
	t[v] = max(t[v * 2], t[v * 2 + 1]);
}
int get(int v, int tl, int tr, int l, int r){
	if(l > tr || tl > r) return 0;
	if(l <= tl && tr <= r) return t[v].second;
	int tm = (tl + tr) / 2;
	return max(get(v * 2, tl, tm, l, r), get(v * 2 + 1, tm + 1, tr, l, r));
}
long long ans(int l, int r){
	if(l > r || l<= 0 || r >n) return 0;
	if(l == r) return b[l];
	int mx = get(1, 1, n, l, r);
	int mxl = get(1, 1, n, l, mx - 1);
	int mxr = get(1, 1, n, mx + 1, r);
	if(b[mxl] > b[mxr]){
		return b[mx] + ans(l, mxl - 1) + ans(mx + 1, r);
	}
	else{
		return b[mx] + ans(l, mx - 1) + ans(mxr + 1, r);
	}
}
main(){
	cin >> n;
	for(int i = 1; i <= n; i ++){
		cin >> a[i];
	}
	for(int i = 1; i <= n; i ++){
		cin >> b[i];
	}
	build(1, 1, n);
	cout << ans(1, n);
}
