#include <iostream>
#include <algorithm>
#include <cmath>
#include <string>
#include <set>
#include <unordered_set>
#include <vector>
#include <map>
#include <unordered_map>
#include <deque>
#include <queue>
#include <stack>
#include <random>
#include <time.h>
#include <utility>
#include <fstream>
#include <cstring>
using namespace std;
#define fast ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL)
#define mofile(s) freopen(s,"r",stdin)
#define outfile(s) freopen(s,"w",stdout)
#define ll long long
#define ii pair<int,int>
#define iii pair<int,ii>
#define fi first
#define se second
#define B bool
#define ST stack
#define DQ deque
#define Q queue
#define S string
#define Ma map
#define UM unordered_map
#define SE set
#define str(x) to_string(x)
#define all(a) (a).begin(),(a).end()
#define FOR(i,l,r) for(int i=l;i<=r;++i)
#define FOD(i,l,r,d) for(int i=r;i>=l;i+=d)
#define ppcnt(x) __builtin_popcountll(x)
#define parity(x) __builtin_parityll(x)
#define lead0(x) __builtin_clzll(x)
#define LOG2 __lg(x)
#define tr0(x) __builtin_ctzll(x)
#define fiset(x) __builtin_ffsll(x)
#define pb push_back
#define tron(x) setprecision(x)
#define het return 0
const int MOD=1e9+7;
const int maxn=1e5+5;
int t[maxn],r[maxn],dp[maxn];
void open(){
    mofile("dptick.inp"); outfile("dptick.out");
}
int main(){
  fast;
  //open();
  int n; cin>>n;
  for(int i=1;i<=n;++i) cin>>t[i];
  for(int i=1;i<n;++i) cin>>r[i];
  memset(dp,0x3f,sizeof(dp));
  dp[0]=0;
  for(int i=0;i<n;++i){
    dp[i+1]=min(dp[i+1],dp[i]+t[i+1]);
    dp[i+2]=min(dp[i+2],dp[i]+r[i+1]);
  }
  cout<<dp[n];
  return 0;
}