#include <bits/stdc++.h>
inline int max2(int a, int b) { return ((a > b) ? a : b); }
inline int max3(int a, int b, int c) { return max2(a, max2(b, c)); }
long long gcd(long long a, long long b) {
  while (b) b ^= a ^= b ^= a %= b;
  return a;
}
long long int power(long long int b, long long int e) {
  long long ans = 1, temp;
  while (e > 0) {
    if (e % 2) ans = (ans * b) % 1000000007;
    b = (b * b) % 1000000007;
    e /= 2;
  }
  return ans;
}
using namespace std;
int n, a[3009], b[3009], c[3009];
int dp[3009][2];
int solve(int idx, int last) {
  if (idx >= n) return 0;
  if (dp[idx][last] != -1) return dp[idx][last];
  if (idx == 0 && (idx + 1) == n) return a[0];
  if (idx == 0)
    dp[idx][last] = max(a[idx] + solve(idx + 1, 1), b[idx] + solve(idx + 1, 0));
  else if (idx == (n - 1))
    dp[idx][last] = last ? b[idx] : a[idx];
  else
    dp[idx][last] =
        last ? (max(b[idx] + solve(idx + 1, 1), c[idx] + solve(idx + 1, 0)))
             : (max(a[idx] + solve(idx + 1, 1), b[idx] + solve(idx + 1, 0)));
  return dp[idx][last];
}
int main() {
  int i;
  memset(dp, -1, sizeof(dp));
  scanf("%d", &n);
  for (i = 0; i < n; i++) scanf("%d", &a[i]);
  for (i = 0; i < n; i++) scanf("%d", &b[i]);
  for (i = 0; i < n; i++) scanf("%d", &c[i]);
  printf("%d\n", solve(0, 0));
  return 0;
}
