#include <bits/stdc++.h>
using namespace std;
int s[1050005], number[1050005], l[1050005], r[1050005], number2[1050005],
    s2[1050005];
long long inverse[25], inverse2[25], temp;
void mergesort(int b, int e) {
  if (b == e) return;
  int m = (b + e) / 2;
  mergesort(b, m);
  mergesort(m + 1, e);
  memcpy(l + 1, s + b, (m - b + 1) * sizeof(int));
  memcpy(r + 1, s + m + 1, (e - m) * sizeof(int));
  l[m - b + 2] = r[e - m + 1] = 2147483647;
  int ln = m - b + 1;
  int li = 1;
  int ri = 1;
  for (int i = b; i <= e; i++) {
    if (l[li] > r[ri]) {
      s[i] = r[ri++];
      temp += ln;
    } else {
      s[i] = l[li++];
      ln--;
    }
  }
}
void mergesort2(int b, int e) {
  if (b == e) return;
  int m = (b + e) / 2;
  mergesort2(b, m);
  mergesort2(m + 1, e);
  memcpy(l + 1, s2 + b, (m - b + 1) * sizeof(int));
  memcpy(r + 1, s2 + m + 1, (e - m) * sizeof(int));
  l[m - b + 2] = r[e - m + 1] = 2147483647;
  int ln = m - b + 1;
  int li = 1;
  int ri = 1;
  for (int i = b; i <= e; i++) {
    if (l[li] > r[ri]) {
      s2[i] = r[ri++];
      temp += ln;
    } else {
      s2[i] = l[li++];
      ln--;
    }
  }
}
int main() {
  int m, floor, n, total, now;
  scanf("%d", &n);
  long long answer;
  now = 2;
  total = 1;
  for (int i = 0; i < n; i++) {
    total *= 2;
  }
  for (int i = 0; i < total; i++) {
    scanf("%d", &number[i]);
    number2[total - i - 1] = number[i];
  }
  for (int i = 1; i <= n; i++) {
    memcpy(s, number, sizeof(int) * total);
    memcpy(s2, number2, sizeof(int) * total);
    for (int j = 0; j < total / now; j++) {
      temp = 0;
      mergesort(j * now, (j + 1) * now - 1);
      inverse[i] += temp;
      temp = 0;
      mergesort2(j * now, (j + 1) * now - 1);
      inverse2[i] += temp;
    }
    now *= 2;
  }
  for (int i = n; i >= 1; i--) {
    inverse[i] -= inverse[i - 1];
    inverse2[i] -= inverse2[i - 1];
  }
  scanf("%d", &m);
  for (int i = 0; i < m; i++) {
    scanf("%d", &floor);
    answer = 0;
    for (int j = 1; j <= floor; j++) {
      swap(inverse[j], inverse2[j]);
    }
    for (int j = 1; j <= n; j++) {
      answer += inverse[j];
    }
    printf("%lld\n", answer);
  }
  return 0;
}
