#include <bits/stdc++.h>
using namespace std;
int setBite(int r, int pos) { return r | (1 << pos); }
int resetBit(int r, int pos) { return r & ~(1 << pos); }
bool checkBit(int r, int pos) { return (r & (1 << pos)); }
bool leap(long long x) {
  if ((x % 4 == 0 && x % 100 != 0) || x % 400 == 0) return true;
  return false;
}
long long bigmod(long long a, long long b, long long mod) {
  if (b == 0) return 1;
  if (b % 2 == 0) {
    long long ret = bigmod(a, b / 2, mod);
    return ((ret % mod) * (ret % mod)) % mod;
  } else
    return ((a % mod) * (bigmod(a, b - 1, mod) % mod)) % mod;
}
template <class T>
inline T gcd(T a, T b) {
  if (a < 0) return gcd(-a, b);
  if (b < 0) return gcd(a, -b);
  return (b == 0) ? a : gcd(b, a % b);
}
template <class T>
inline T lcm(T a, T b) {
  if (a < 0) return lcm(-a, b);
  if (b < 0) return lcm(a, -b);
  return a * (b / gcd(a, b));
}
template <class T>
inline T sqr(T x) {
  return x * x;
}
template <class T>
inline T power(T r, T p) {
  T ans = 1;
  for (T i = 0; i < p; i++) {
    ans *= r;
  }
  return ans;
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  int n;
  cin >> n;
  int g[2 * n + 5][2 * n + 5];
  for (int i = 0; i < 2 * n + 5; i++) {
    for (int j = 0; j < 2 * n + 5; j++) {
      g[i][j] = 0;
    }
  }
  for (int i = 1; i <= n - 1; i++) {
    int a;
    cin >> a;
    g[i][i + 1] = a;
    g[i + 1][i] = a;
  }
  for (int i = n + 1; i <= 2 * n - 1; i++) {
    int a;
    cin >> a;
    g[i][i + 1] = a;
    g[i + 1][i] = a;
  }
  for (int i = 1; i <= n; i++) {
    int a;
    cin >> a;
    g[i][i + n] = a;
    g[i + n][i] = a;
  }
  vector<int> v;
  for (int i = 1; i <= n; i++) {
    int ans = 0;
    for (int j = 1; j <= i - 1; j++) {
      ans += g[j][j + 1];
    }
    ans += g[i][i + n];
    for (int j = i + n; j <= 2 * n - 1; j++) {
      ans += g[j][j + 1];
    }
    v.push_back(ans);
  }
  sort(v.begin(), v.end());
  cout << v[0] + v[1];
  return 0;
}
