50 50
75 71 23 37 28 23 69 75 5 62 3 11 96 100 13 50 57 51 8 90 4 6 84 27 11 89 95 81 10 62 48 52 69 87 97 95 30 74 21 42 36 64 31 80 81 50 56 53 33 99
26 30 5 33 35 29 6 15 36 17 32 16 14 1 29 34 22 40 12 42 38 48 39 50 13 47 18 43 10 8 49 45 11 31 21 37 46 28 20 41 2 7 9 24 27 23 3 44 15 14
 10 10
61 59 97 16 2 94 57 48 91 93
2 8 6 5 3 1 3 4 9 10
 2 1
1 2
1
 3 3
10 20 30
1 2 3
 50 60
86 57 45 93 17 12 40 10 47 80 18 80 3 9 6 55 13 99 5 76 4 70 100 55 27 91 71 3 65 93 41 74 80 56 90 50 58 13 71 9 47 52 26 73 72 21 15 81 88 28
40 32 5 16 49 23 3 17 14 10 1 15 1 21 28 22 13 45 12 25 44 48 46 32 36 43 11 8 49 7 7 35 10 14 39 4 42 10 30 27 1 17 31 15 8 41 44 33 25 26 19 18 29 37 50 6 36 38 47 9
 2 7
20 30
1 1 1 2 2 2 2
 2 2
10 12
2 1
 5 1
16 87 36 16 81
3
 2 3
20 30
1 1 1
 2 10
39 26
1 1 2 2 2 2 2 2 1 2

63929
 2137
 0
 40
 62514
 20
 12
 0
 0
 104

#include <bits/stdc++.h>
#include <stdio.h>    

using namespace std;
     
#define F first
#define S second
#define lb lower_bound
#define ub upper_bound
#define pb push_back
#define pf push_front
#define ppb pop_back
#define mp make_pair
#define bbp __builtin_popcount
#define al 0x3F3F3F3F
#define sz(x) x.size()
#define sqr(x) ((x) * (x))
#define all(x) x.begin(), x.end()
#define in insert
#define ppf pop_front
#define endl '\n'
#define resize(v) v.resize(unique(all(v)) - v.begin());
#define int long long

typedef unsigned long long ull;
typedef long long ll;
typedef long double ld;
typedef pair <int, int> pii;

const int mod = (int)1e9 + 7;                                   
const int MAX_N = (int)2e5 + 123;
const int N = 2e6 + 123;                     
const int INF = al;           
const ll INFL = 3e18 + 1;
const double pi = acos(-1.0);
const double eps = 1e-9;
const int dx[] = {0, 0, 1, 0, -1};
const int dy[] = {0, 1, 0, -1, 0};

int n, m, a[501], b[1001];
ll Ss, ans;
bool used[1001];
vector <int> cur;

inline void boost() {
    ios_base :: sync_with_stdio(NULL);                
    cin.tie(NULL), cout.tie(NULL);                            
}                                                                     
                                                                   
inline void Solve () {
	boost();
	cin >> n >> m;
	for (int i = 1; i <= n; i ++) cin >> a[i], Ss += 1ll * a[i];
	for (int i = 1; i <= m; i ++) cin >> b[i];
	for (int i = 1; i <= m; i ++) {
		if (!used[b[i]]) cur.pb(b[i]);
		used[b[i]] = 1;
	}
	reverse(all(cur));
	int id = 1;
	while (m --) {
		int x = b[id ++];
	//	for (auto it : cur) cout << it << ' ';
	//	cout << endl;
		vector <int> p;
		ll sum = 0;
		for (int i = 0; i < sz (cur); i ++) {
			sum += 1ll * a[cur[i]];
			if (cur[i] == x) {
			//	cout << Ss << ' ' << sum << endl;
				ans += 1ll * Ss - sum;				
			}
			else p.pb(cur[i]);

		}
		p.pb(x);
		cur = p;	
	}
	cout << ans;

}                          

main () {
//	freopen("sparse.in", "r", stdin);	         			
//	freopen("sparse.out", "w", stdout);
   int tt = 1;
	while (tt --) {
   	Solve();
   }
   return 0;
}                                                                                                                	