#include <bits/stdc++.h>
using namespace std;
struct __s {
  __s() {
    if (1) {
      ios_base::Init i;
      cin.sync_with_stdio(0);
      cin.tie(0);
    }
  }
  ~__s() {
    if (!1)
      fprintf(stderr, "Execution time: %.3lf s.\n",
              (double)clock() / CLOCKS_PER_SEC);
    long long n;
    cin >> n;
  }
} __S;
int main(void) {
  long long n, m;
  cin >> n;
  vector<long long> a(n);
  for (long long i = 0; i < (long long)(n); i++) {
    cin >> a[i];
  }
  cin >> m;
  long long b = 0;
  for (long long i = 0; i < (long long)(m); i++) {
    long long x;
    cin >> x;
    b += x - 1;
  }
  vector<long long> c;
  while (c.size() < 3 * max(m, n)) {
    for (long long i = 0; i < (long long)(n - 1); i++) {
      c.push_back(i);
    }
    for (long long i = 0; i < (long long)(n - 1); i++) {
      c.push_back(n - 1 - i);
    }
  }
  long long d = 0;
  for (long long i = 0; i < (long long)(m); i++) {
    b -= c[i];
    if (i) d += abs(a[c[i]] - a[c[i - 1]]);
  }
  set<long long> ans;
  for (long long i = m; i < c.size(); i++) {
    if (b == 0) {
      ans.insert(d);
    }
    b -= c[i];
    b += c[i - m];
    d -= abs(a[c[i - m]] - a[c[i - m + 1]]);
    d += abs(a[c[i]] - a[c[i - 1]]);
  }
  if (ans.size() != 1)
    cout << -1 << '\n';
  else
    cout << *ans.begin() << '\n';
  return 0;
}
