/* Rozwiazanie wzorcowe do zadania ZET
 * Autor: JR
 */

#include <cstdio>
#include <map>
using namespace std;

int n, m, z, err;
long long k;
map<int, long long> mapa;

int main() {
  err=scanf("%d", &n);
  for (int i = 0; i < n; ++i) {
    err=scanf("%d", &m);
    ++mapa[m];
  }
  err=scanf("%d", &z);
  while (z--) {
    err=scanf("%lld", &k);
    while (k > 0) {
      map<int, long long>::iterator it = mapa.end();
      --it;
      m = (*it).first;
      int a = min((*it).second, k);
      k -= a;
      it->second -= a;
      if (it->second == 0)
        mapa.erase(it);
      mapa[m / 2] += a;
      mapa[(m + 1) / 2] += a;
    }
    printf("%d\n", (int)mapa.size());
  }
  return 0;
}
