#include <bits/stdc++.h>
using namespace std;
const int INF = 0x3f3f3f3f;
const int MOD7 = (int)1e9 + 7;
template <class T1, class T2>
int upmin(T1 &x, T2 v) {
  if (x > v) {
    x = v;
    return 1;
  }
  return 0;
}
template <class T1, class T2>
int upmax(T1 &x, T2 v) {
  if (x < v) {
    x = v;
    return 1;
  }
  return 0;
}
int N;
vector<vector<int> > W;
void init() {
  cin >> N;
  W = vector<vector<int> >(3, vector<int>(N));
  for (int i = 0; i < 3; ++i)
    for (int j = 0; j < N; ++j) cin >> W[i][j];
}
int dp[2][3000 + 1][3000 + 1][2];
void preprocess() {
  for (int i = 0; i < 3; ++i)
    for (int j = 0; j < N; ++j)
      ;
  memset(dp, -1, sizeof(dp));
}
int dfs(int a, int ql, int qr, int b) {
  if (ql + 1 == qr) return W[a + b][ql];
  int &res = dp[a][ql][qr][b];
  if (~res) return res;
  upmax(res, W[a][ql] + dfs(1, ql + 1, qr, b));
  upmax(res, W[a + 1][ql] + dfs(0, ql + 1, qr, b));
  upmax(res, dfs(a, ql, qr - 1, 1) + W[b][qr - 1]);
  upmax(res, dfs(a, ql, qr - 1, 0) + W[b + 1][qr - 1]);
  return res;
}
void solve() { cout << dfs(0, 0, N, 0) << endl; }
signed main() {
  ios::sync_with_stdio(0);
  init();
  preprocess();
  solve();
  return 0;
}
