#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll n; // Maara
ll d; // Radius
ll N = 1;
vector<ll> mastot; // Lista mastojen sateista
vector<ll> hinnat; // Kertoo hinnath
vector<ll> dp;
ll segmentti[202020];
ll mini(ll alku, ll loppu){
alku += N;
loppu += N;
ll minim = 1e9;
while(alku <= loppu){
if(alku % 2 == 1) minim = min(minim, segmentti[alku++]);
if(loppu % 2 == 0) minim = min(minim, segmentti[loppu--]);
alku /= 2; loppu /= 2;
}
return minim;
}
void muokkaa(ll kohta, ll juttu){
kohta += N;
// cout << kohta << ": " << segmentti[kohta] << " JAA a\n"
segmentti[kohta] = juttu;
for(kohta /= 2; kohta >= 1; kohta /= 2){
segmentti[kohta] = min(segmentti[kohta*2], segmentti[kohta*2+1]);
}
}
INT main(){
cin >> n;
for(ll i = 0; i < n; i++){
cin >> d;
mastot.push_back(d);
}
hinnat.push_back(0);
for(ll i = 0; i < n-1; i++){
cin >> d;
hinnat.push_back(d);
}
while(N < n){
N *= 2;
}
for(ll i = 0; i < 2*N; i++){
segmentti[i] = 1e18;
}
for(ll i = 0; i < hinnat.size(); i++){
// segmentti[N + i] = hinnat[i];
}
for(ll i = N-1;i >= 1; i--){
// segmentti[i] = min(segmentti[2*i],segmentti[2*i+1]);
}
// muokkaa(n,0);
muokkaa(n,0);
// SEGMENTTIPUU ON SETUPATTU JOTEN NYT PITAA HOITAA VAA LOPUT
for(ll i = mastot.size()-1; i >= 0; i--){
ll mina = mini(i,min((ll)(mastot.size()), i+mastot[i])) + hinnat[i];
muokkaa(i, mina);
for(ll i = N; i < N + mastot.size(); i++){
// cout << segmentti[i] << " ";
}
// cout << "\n";
}
for(ll i = N; i < N + mastot.size(); i++){
// cout << segmentti[i] << " ";
}
//cout << "\n";
cout << segmentti[N] << "\n";
/*
cout << "TAHAN PAASTY\n";
//muokkaa(0,0);
for(ll i = 1; i < 2*N; i++){
cout << segmentti[i] << " ";
}
ll e, f;
for(ll i = 0; i < n; i++){
cin >> d;
cout << "\n";
if(d == 1){
cin >> e >> f;
muokkaa(e,f);
}else{
cin >> e >> f;
cout << mini(e,f) << "\n";
}
for(ll i = N; i < 2*N; i++){
cout << segmentti[i] << " ";
}
}*/
}