// zadanie Zetony: rozwiazanie uzywajace tablicy zamiast mapy
// (akceptowane w wariancie prostszym)
// autor: Eryk Kopczynski

#include <cstdio>
#include <map>

using namespace std;

#define MAXM 1000010

int ilejakich[MAXM];

int N, Z, curM, licznik;

int main() {
  licznik = 0;
  
  scanf("%d", &N);
  for(int n=0; n<N; n++) {
    int m;
    scanf("%d", &m);
    if(!ilejakich[m]) licznik++;
    ilejakich[m]++;
    }
  
  curM = MAXM-1;
  
  scanf("%d", &Z);
  for(int z=0; z<Z; z++) {
    int K;
    scanf("%d", &K);
    while(K > 0) {
      if(ilejakich[curM] == 0) curM--;
      else if(ilejakich[curM] <= K) {
        if(!ilejakich[curM/2]) licznik++;
        ilejakich[curM/2] += ilejakich[curM];
        if(!ilejakich[(curM+1)/2]) licznik++;
        ilejakich[(curM+1)/2] += ilejakich[curM];
        K -= ilejakich[curM];
        ilejakich[curM] = 0; licznik--;
        }
      else {
        if(!ilejakich[curM/2]) licznik++;
        ilejakich[curM/2] += K;
        if(!ilejakich[(curM+1)/2]) licznik++;
        ilejakich[(curM+1)/2] += K;
        ilejakich[curM] -= K;
        K = 0;
        }
      }
    printf("%d\n", licznik);
    }
  
  return 0;
  }
