#include <bits/stdc++.h>
using namespace std;
int gcdExtended(int a, int b, int *x, int *y) {
  if (a == 0) {
    *x = 0, *y = 1;
    return b;
  }
  int x1, y1;
  int gcd = gcdExtended(b % a, a, &x1, &y1);
  *x = y1 - (b / a) * x1;
  *y = x1;
  return gcd;
}
long long int modInverse(int a, int m) {
  int x, y;
  int g = gcdExtended(a, m, &x, &y);
  long long int res = ((long long int)x % m + (long long int)m) % m;
  return res;
}
void fastscan(int &number) {
  bool negative = false;
  register int c;
  number = 0;
  c = getchar();
  if (c == '-') {
    negative = true;
    c = getchar();
  }
  for (; (c > 47 && c < 58); c = getchar()) number = number * 10 + c - 48;
  if (negative) number *= -1;
}
long long int poww(long long int a, long long int b) {
  long long int ans = 1;
  for (int i = 1; i <= b; i++) {
    ans *= a;
  }
  return ans;
}
inline long long int max(long long int a, long long int b) {
  if (a > b)
    return a;
  else
    return b;
}
inline long long int min(long long int a, long long int b) {
  if (a > b)
    return b;
  else
    return a;
}
long long int ncr(int n, int r) {
  long long int ans = 1;
  r = min(r, n - r);
  for (int(i) = 0; i < (r); (i)++) {
    ans = (ans * (n - i) / (i + 1)) % 1000000007;
  }
  return ans;
}
int main() {
  ios::sync_with_stdio(false);
  cin.tie(NULL);
  int t = 1;
  while (t--) {
    int n, m, k;
    fastscan(n);
    vector<int> a(n), b(n), c(n - 1);
    for (int(i) = 0; i < (n); (i)++) {
      fastscan(a[i]);
      a[i]--;
    }
    for (int i = 0; i < (n); i++) cin >> (b)[i];
    for (int i = 0; i < (n - 1); i++) cin >> (c)[i];
    int ans = 0;
    for (int(i) = 0; i < (n); (i)++) ans += b[i];
    for (int i = 0; i < n - 1; i++) {
      if (a[i] == (a[i + 1] - 1)) {
        ans += c[a[i]];
      }
    }
    cout << ans;
  }
  return 0;
}
