#include <bits/stdc++.h>
using namespace std;
int a[2000005];
int b[2000005];
long long dp[25][2];
void ms(int lev, int l, int r) {
  if (lev == 0) {
    dp[0][0] = dp[0][1] = 0;
    return;
  }
  int mid = (l + r) / 2;
  ms(lev - 1, l, mid), ms(lev - 1, mid + 1, r);
  for (int i = l; i <= mid; i++) {
    dp[lev][0] += (lower_bound(a + mid + 1, a + r + 1, a[i]) - (a + mid + 1));
    dp[lev][1] +=
        (r - mid - (upper_bound(a + mid + 1, a + r + 1, a[i]) - (a + mid + 1)));
  }
  sort(a + l, a + r + 1);
}
int main() {
  int n;
  while (~scanf("%d", &n)) {
    int len = (1 << n);
    for (int i = 1; i <= len; i++) scanf("%d", &a[i]);
    memset(dp, 0, sizeof(dp));
    ms(n, 1, len);
    int m;
    scanf("%d", &m);
    while (m--) {
      int q;
      scanf("%d", &q);
      for (int i = q; i >= 0; i--) swap(dp[i][0], dp[i][1]);
      long long ans = 0;
      for (int i = 0; i <= n; i++) ans += dp[i][0];
      printf("%lld\n", ans);
    }
  }
}
