#include <bits/stdc++.h>
using namespace std;
int a[(1 << 20) + 5], b[(1 << 20) + 5], tmp[(1 << 20) + 5];
vector<long long> v[2][22];
long long res[22][2];
int state[22];
long long find_normal(int l, int r) {
  int now, mid, i, j;
  long long ans;
  for (i = l; i <= r; i++) tmp[i] = a[i];
  now = -1;
  mid = (l + r) / 2;
  i = l;
  j = mid + 1;
  ans = 0;
  while (1) {
    if (i > mid && j > r) break;
    now++;
    if (i > mid) {
      a[l + now] = tmp[j];
      j++;
      continue;
    }
    if (j > r) {
      a[l + now] = tmp[i];
      ans += j - (mid + 1);
      i++;
      continue;
    }
    if (tmp[j] < tmp[i]) {
      a[l + now] = tmp[j];
      j++;
      continue;
    }
    a[l + now] = tmp[i];
    i++;
    ans += j - (mid + 1);
  }
  return ans;
}
long long find_reverse(int l, int r) {
  int now, mid, i, j;
  long long ans;
  for (i = l; i <= r; i++) tmp[i] = b[i];
  now = -1;
  mid = (l + r) / 2;
  i = l;
  j = mid + 1;
  ans = 0;
  while (1) {
    if (i > mid && j > r) break;
    now++;
    if (i > mid) {
      b[l + now] = tmp[j];
      ans += (i - l);
      j++;
      continue;
    }
    if (j > r) {
      b[l + now] = tmp[i];
      i++;
      continue;
    }
    if (tmp[i] < tmp[j]) {
      b[l + now] = tmp[i];
      i++;
    } else {
      b[l + now] = tmp[j];
      j++;
      ans += i - l;
    }
  }
  return ans;
}
void build(int lev, int at, int l, int r) {
  if (l == r) return;
  int k, mid;
  k = at * 2;
  mid = (l + r) / 2;
  v[0][lev].push_back(0);
  v[1][lev].push_back(0);
  build(lev + 1, k, l, mid);
  build(lev + 1, k + 1, mid + 1, r);
  v[0][lev][at] = find_normal(l, r);
  v[1][lev][at] = find_reverse(l, r);
  res[lev][0] += v[0][lev][at];
  res[lev][1] += v[1][lev][at];
  return;
}
int main() {
  int N, tot, i;
  int M, q;
  cin >> N;
  tot = 1 << N;
  for (i = 0; i < tot; i++) {
    cin >> a[i];
    b[i] = a[i];
  }
  memset(state, 0, sizeof(state));
  memset(res, 0ll, sizeof(res));
  build(0, 0, 0, tot - 1);
  cin >> M;
  while (M--) {
    cin >> q;
    q = N - q;
    for (i = q; i < N; i++) state[i] = 1 - state[i];
    long long ans = 0ll;
    for (i = 0; i < N; i++) ans += res[i][state[i]];
    cout << ans << endl;
  }
  return 0;
}
