#include <bits/stdc++.h>
using namespace std;
const int N = (1 << 20) + 5;
int a[N];
int n;
vector<vector<long long> > t(4 * N, vector<long long>(2, 0));
vector<vector<long long> > sum(21, vector<long long>(2, 0));
vector<int> ty(21, 0);
long long res;
void build(int root, int l, int r) {
  if (r - l == 1) {
    t[root][0] = t[root][1] = 0;
    return;
  }
  long long mid = (l + r) / 2;
  build(2 * root, l, mid);
  build(2 * root + 1, mid, r);
  vector<int> tm(r - l);
  long long i = l;
  long long j1 = mid, j2 = mid;
  int cnt = 0;
  long long res[2] = {0, 0};
  while (i != mid) {
    while (!(j1 == r or a[j1] >= a[i])) {
      tm[cnt++] = a[j1++];
    }
    while (!(j2 == r or a[j2] > a[i])) {
      j2++;
    }
    res[0] += j1 - mid;
    res[1] += r - j2;
    tm[cnt++] = a[i++];
  }
  while (j1 != r) {
    tm[cnt++] = a[j1++];
  }
  t[root][0] = res[0];
  t[root][1] = res[1];
  for (int i = 0; i < cnt; ++i) {
    a[i + l] = tm[i];
  }
}
void suma(int num) {
  int h = n;
  for (int nn = 1; nn <= num; nn *= 2) {
    for (int i = nn; i < 2 * nn; i++) {
      sum[h][0] += t[i][0];
      sum[h][1] += t[i][1];
    }
    res += sum[h--][0];
  }
}
void update(int h) {
  for (int i = 0; i <= h; i++) {
    res -= sum[i][ty[i]];
    ty[i] = 1 - ty[i];
    res += sum[i][ty[i]];
  }
}
int main() {
  ios::sync_with_stdio(false);
  cin.tie(NULL);
  cin >> n;
  int num = 1 << n;
  for (int i = 0; i < num; ++i) {
    cin >> a[i];
  }
  build(1, 0, num);
  suma(num);
  int q;
  cin >> q;
  int h;
  while (q--) {
    cin >> h;
    update(h);
    cout << res << "\n";
  }
}
