#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
vector <long long > tree, a ;
int merge(int a, int b) {
return a, b;
}
void build (int a[], int v, int l, int r){
if(r==l+1){
if(a[l]==0)
tree[v]=1;
else tree[v]=0;
return;
}
int m=(l+r)/2;
build (a,2*v+1, l , m);
build (a,2*v+2, m , r);
tree[v]=merge (tree[2*v+1],tree[2*v+2]);
}
int get(int v, int l, int r, int k){
if(r-1==l){
return l;
}
int m=(l+r)/2;
if(tree[2*v+1]>=k){
return get(2*v+1, l, m , k);
} else {
return get(2*v+2, m , r , k-tree[2*v+1]);
}
}
int main() {
int n;
cin>>n;
int a[n];
for(int i=0; i<n; i++){
cin>>a[i];
}
tree.resize(4*n);
build(a,0,0,n);
int k;
cin>>k;
for(int i=0; i<k; i++){
int q;
cin>>q;
if(tree[0]<q) cout<<-1<<" ";
else cout<<get(0,0,n,q)+1<<" ";
}
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8YWxnb3JpdGhtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwp2ZWN0b3IgPGxvbmcgbG9uZyA+IHRyZWUsIGEgOwppbnQgbWVyZ2UoaW50IGEsIGludCBiKSB7CiAgICByZXR1cm4gYSwgYjsKfQoKdm9pZCBidWlsZCAoaW50IGFbXSwgaW50IHYsIGludCBsLCBpbnQgcil7CglpZihyPT1sKzEpewoJCWlmKGFbbF09PTApCgkJdHJlZVt2XT0xOwoJZWxzZSB0cmVlW3ZdPTA7CgkJcmV0dXJuOwoJfQoJaW50IG09KGwrcikvMjsKCWJ1aWxkIChhLDIqdisxLCBsICwgbSk7CglidWlsZCAoYSwyKnYrMiwgbSAsIHIpOwoJdHJlZVt2XT1tZXJnZSAodHJlZVsyKnYrMV0sdHJlZVsyKnYrMl0pOwp9CmludCBnZXQoaW50IHYsICBpbnQgbCwgaW50IHIsIGludCBrKXsKCWlmKHItMT09bCl7CgkJcmV0dXJuIGw7Cgl9CglpbnQgbT0obCtyKS8yOwoJaWYodHJlZVsyKnYrMV0+PWspewoJCSByZXR1cm4gZ2V0KDIqdisxLCBsLCBtICwgayk7Cgl9IGVsc2UgewoJCXJldHVybiBnZXQoMip2KzIsIG0gLCByICwgay10cmVlWzIqdisxXSk7Cgl9Cn0KaW50IG1haW4oKSB7CglpbnQgbjsKCWNpbj4+bjsKCWludCBhW25dOwoJZm9yKGludCBpPTA7IGk8bjsgaSsrKXsKCQljaW4+PmFbaV07Cgl9Cgl0cmVlLnJlc2l6ZSg0Km4pOwoJYnVpbGQoYSwwLDAsbik7CglpbnQgazsKCWNpbj4+azsKCWZvcihpbnQgaT0wOyBpPGs7IGkrKyl7CgkJaW50IHE7CgkJY2luPj5xOwoJCWlmKHRyZWVbMF08cSkgY291dDw8LTE8PCIgIjsKCQllbHNlIGNvdXQ8PGdldCgwLDAsbixxKSsxPDwiICI7CgkJCgl9Cn0=