#include <bits/stdc++.h>
using ull = unsigned long long;
constexpr auto mod = 1000000007;
constexpr auto INF = ULLONG_MAX;
using namespace std;
template <typename T>
inline void dump(const T& x) {
  cout << "[" << x << "]" << endl;
}
template <typename T>
inline void dump(const vector<T>& x) {
  for (const auto v : x) {
    cout << v << " ";
  }
  cout << endl;
}
template <typename T>
inline void sort_asc(vector<T>& x) {
  std::sort(x.begin(), x.end());
}
template <typename T>
inline void sort_desc(vector<T>& x) {
  std::sort(x.begin(), x.end(), greater<T>());
}
template <typename T>
inline T max_value(vector<T>& x) {
  return *max_element(x.begin(), x.end());
}
template <typename T>
inline T min_value(vector<T>& x) {
  return *min_element(x.begin(), x.end());
}
template <typename T>
inline T sum_value(vector<T>& x) {
  return accumulate(x.begin(), x.end(), 0ULL);
}
int main() {
  ull n;
  cin >> n;
  vector<ull> a;
  for (auto i = 0; i < n; i++) {
    ull tmp;
    cin >> tmp;
    a.emplace_back(tmp);
  }
  vector<ull> b;
  for (auto i = 0; i < n; i++) {
    ull tmp;
    cin >> tmp;
    b.emplace_back(tmp);
  }
  vector<ull> c;
  for (auto i = 0; i < n - 1; i++) {
    ull tmp;
    cin >> tmp;
    c.emplace_back(tmp);
  }
  ull result = 0;
  ull before = INF;
  for (auto i = 0; i < n; i++) {
    if ((before + 1) == (a[i] - 1)) {
      result += c[before];
    }
    result += b[a[i] - 1];
    before = a[i] - 1;
  }
  cout << result << endl;
  return 0;
}
