#include <bits/stdc++.h>
using namespace std;
#define int              long long int
#define double           long double
#define print(a)         for(auto x : a) cout << x << " "; cout << endl


const int N = 3e5+9;
const int INF = 2e9+1;
const int LINF = 2000000000000000001;




//_ ***************************** START Below *******************************




vector<int> E;
vector<int> M;
vector<int> H;

int consistency(int n){

	vector<int> dpE(n);
	vector<int> dpM(n);
	vector<int> dpH(n);
	
	dpE[0] = E[0];
	dpM[0] = M[0];
	dpH[0] = H[0];
	
	dpE[1] = E[1] + max({dpE[0], dpM[0], dpH[0]});
	dpM[1] = M[1] + max({dpE[0], dpM[0], dpH[0]});
	dpH[1] = H[1] + max({dpE[0], dpM[0], dpH[0]});
	
	
	for(int i=2; i<n; i++){
		dpE[i] = E[i] + max( {dpE[i-1] , dpM[i-1] , dpH[i-1] });
		dpM[i] = M[i] +  E[i-1] + dpM[i-2];
		
		dpH[i] = H[i] + E[i-1] + dpE[i-2];
		if(i-3>=0){
			dpH[i] = max(dpH[i] , H[i] + M[i-1] + E[i-2] + dpM[i-3] );
			dpH[i] = max(dpH[i] , H[i] + H[i-1] + E[i-2] + dpE[i-3] );
		}
		
	}
	
	return max({dpE[n-1], dpM[n-1], dpH[n-1]});
	

}















int practice(int n){


    return 0;
}





void solve() {
    
    int n;
    cin>> n;
    
    E.resize(n);
    M.resize(n);
    H.resize(n);
    for(int i=0; i<n; i++) cin >> E[i];
    for(int i=0; i<n; i++) cin >> M[i];
    for(int i=0; i<n; i++) cin >> H[i];
    
    cout << consistency(n) << endl;


}





int32_t main() {
    ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);

    int t = 1;
    // cin >> t;
    while (t--) {
        solve();
    }

    return 0;
}