#include <bits/stdc++.h>
using namespace std;
const int MAXN = 200005;
set<long long> wyniki;
vector<int> P;
int n, m, A[MAXN], B[2 * MAXN];
int X[MAXN];
int abs(int x) { return x < 0 ? -x : x; }
void printX() {
  printf("X: ");
  for (int i = 1; i <= n; i++) printf("%d ", X[i]);
  printf("\n");
}
int main() {
  scanf("%d", &n);
  for (int i = 1; i <= n; i++) scanf("%d", &A[i]);
  scanf("%d", &m);
  for (int i = 1; i <= m; i++) {
    int b;
    scanf("%d", &b);
    X[b]++;
  }
  int x = 1;
  int kierunek = 1;
  for (int i = 1; i <= 2 * n + m + 10; i++) {
    P.push_back(x);
    if (x == n && kierunek == 1) kierunek = -1;
    if (x == 1 && kierunek == -1) kierunek = 1;
    x += kierunek;
  }
  long long cur = 0;
  int p = 0, k = m - 1;
  for (int i = p; i <= k; i++) {
    X[P[i]]--;
    if (i < k) cur += abs(A[P[i]] - A[P[i + 1]]);
  }
  int zera = 0;
  for (int i = 1; i <= n; i++)
    if (X[i] == 0) zera++;
  while (p <= 2 * n) {
    if (X[P[p]] == -1) zera++;
    if (X[P[p]] == 0) zera--;
    X[P[p]]++;
    p++;
    k++;
    if (X[P[k]] == 1) zera++;
    if (X[P[k]] == 0) zera--;
    X[P[k]]--;
    cur -= abs(A[P[p]] - A[P[p - 1]]);
    cur += abs(A[P[k]] - A[P[k - 1]]);
    if (zera == n) wyniki.insert(cur);
  }
  if (int(wyniki.size()) != 1) {
    printf("-1");
    return 0;
  }
  printf("%I64d", *wyniki.begin());
  return 0;
}
