#include <bits/stdc++.h>
using namespace std;
void init_ios() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
}
const long long N = (1 << 20) + 10;
long long res, a[N], b[N], ile[22], last[22], rowne[22];
long long n, q, pot[N], sumka[22], suma[22];
void MergSort(long long p, long long r) {
  if (p == r) return;
  long long q = (p + r) / 2;
  MergSort(p, q);
  MergSort(q + 1, r);
  for (long long i = p; i <= q;) {
    long long j = i;
    while (j <= q && a[j] == a[i]) ++j;
    if (j - i > 1) {
      sumka[pot[q - p + 1]] += (j - i) * (j - i);
      suma[pot[q - p + 1]] += (j - i);
    }
    i = j;
  }
  for (long long i = q + 1; i <= r;) {
    long long j = i;
    while (j <= r && a[j] == a[i]) ++j;
    if (j - i > 1) {
      sumka[pot[r - q]] += (j - i) * (j - i);
      suma[pot[r - q]] += (j - i);
    }
    i = j;
  }
  long long i = p;
  long long j = q + 1;
  long long k = p;
  while (i <= q && j <= r) {
    if (a[i] > a[j]) {
      b[k] = a[j];
      j++;
      res += q - i + 1;
      ile[pot[r - p + 1]] += q - i + 1;
    } else {
      if (a[i] == a[j]) ++rowne[pot[r - p + 1]];
      b[k] = a[i];
      i++;
    }
    k++;
  }
  for (; j <= r; j++) {
    b[k] = a[j];
    k++;
  }
  for (; i <= q; i++) {
    b[k] = a[i];
    k++;
  }
  for (long long kk = p; kk <= r; kk++) a[kk] = b[kk];
}
signed main() {
  init_ios();
  cin >> n;
  long long co = 2;
  for (long long i = 1; i <= n; ++i) {
    pot[co] = i;
    co *= 2;
  }
  for (long long i = 0; i < (1 << n); ++i) cin >> a[i];
  MergSort(0, ((1 << n) - 1));
  for (long long i = 0; i < (1 << n);) {
    long long j = i;
    while (j < (1 << n) && a[j] == a[i]) ++j;
    if (j - i > 1) {
      sumka[n] += (j - i) * (j - i);
      suma[n] += j - i;
    }
    i = j;
  }
  for (long long i = 1; i <= n; ++i) ile[i] += ile[i - 1];
  cin >> q;
  while (q--) {
    long long x;
    cin >> x;
    if (x == 0) {
      cout << ile[n] << "\n";
      continue;
    }
    for (long long i = 1; i <= x; ++i) {
      last[i] = ile[i];
      long long sum = ile[i];
      long long all = (1 << (n - i)), len = (1 << i);
      all *= (len * (len - 1)) / 2;
      ile[i] += all - 2 * sum - (sumka[i] - suma[i]) / 2;
    }
    for (long long i = x + 1; i <= n; ++i) {
      last[i] = ile[i];
      ile[i] += ile[i - 1] - last[i - 1];
    }
    cout << ile[n] << "\n";
  }
}
