#include<bits/stdc++.h>
using namespace std;
using ll = long long;
using p = pair<ll, ll>;
using V = vector<int>;
using VV = vector<vector<int>>;
using VVV = vector<vector<vector<int>>>;
using VL = vector<ll>;
using VVL = vector<vector<ll>>;
using VVVL = vector<vector<vector<ll>>>;
using Graph = VV;
template<class T> inline bool chmax(T& a, T b) { if (a < b) { a = b; return true; } return false; }
template<class T> inline bool chmin(T& a, T b) { if (a > b) { a = b; return true; } return false; }
int Inf = (1 << 30);
ll inf = (1LL << 60);
const int MOD = 1e9 + 7;
int main() {
	int n;
	cin >> n;
	int i;
	V a(n);
	V b(n);
	V c(n);
	for (i = 0; i < n; i++) {
		cin >> a[i];
		a[i]--;
	}
	for (i = 0; i < n; i++) {
		cin >> b[i];
	}
	for (i = 0; i < n - 1; i++) {
		cin >> c[i];
	}
	int ans = 0;
	int zen = -2;
	for (i = 0; i < n; i++) {
		ans += b[a[i]];
		if (a[i] - zen == 1) ans += c[zen];
		zen = a[i];
	}
	cout << ans;
	return 0;
}#include<bits/stdc++.h>
using namespace std;
using ll = long long;
using p = pair<ll, ll>;
using V = vector<int>;
using VV = vector<vector<int>>;
using VVV = vector<vector<vector<int>>>;
using VL = vector<ll>;
using VVL = vector<vector<ll>>;
using VVVL = vector<vector<vector<ll>>>;
using Graph = VV;
template<class T> inline bool chmax(T& a, T b) { if (a < b) { a = b; return true; } return false; }
template<class T> inline bool chmin(T& a, T b) { if (a > b) { a = b; return true; } return false; }
int Inf = (1 << 30);
ll inf = (1LL << 60);
const int MOD = 1e9 + 7;
int main() {
	int n;
	cin >> n;
	int i;
	V a(n);
	V b(n);
	V c(n);
	for (i = 0; i < n; i++) {
		cin >> a[i];
		a[i]--;
	}
	for (i = 0; i < n; i++) {
		cin >> b[i];
	}
	for (i = 0; i < n - 1; i++) {
		cin >> c[i];
	}
	int ans = 0;
	int zen = -2;
	for (i = 0; i < n; i++) {
		ans += b[a[i]];
		if (a[i] - zen == 1) ans += c[zen];
		zen = a[i];
	}
	cout << ans;
	return 0;
}