#include <bits/stdc++.h>
const int maxn = 100010;
int a[maxn], b[maxn], c[maxn], n, dp[2][maxn];
void innew(int &a, int b) {
  if (a < b) a = b;
}
void find(int k, int x) {
  if (x == n) {
    dp[k][x] = k ? b[n] : a[n];
    return;
  }
  if (dp[1][x + 1] == -1) find(1, x + 1);
  dp[k][x] = dp[1][x + 1] + (k ? b[x] : a[x]);
  if (dp[0][x + 1] == -1) find(0, x + 1);
  innew(dp[k][x], dp[0][x + 1] + (k ? c[x] : b[x]));
}
int main() {
  scanf("%d", &n);
  for (int i = 1; i <= n; i++) scanf("%d", &a[i]);
  for (int i = 1; i <= n; i++) scanf("%d", &b[i]);
  for (int i = 1; i <= n; i++) scanf("%d", &c[i]);
  memset(dp, 0xff, sizeof dp);
  if (dp[0][1] == -1) find(0, 1);
  printf("%d\n", dp[0][1]);
  return 0;
}
