#include <iostream>
#include <vector>
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<<" ";
}
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwp2ZWN0b3IgPGxvbmcgbG9uZyA+IHRyZWUsIGEgOwppbnQgbWVyZ2UoaW50IGEsIGludCBiKSB7CiAgICByZXR1cm4gYStiOwp9Cgp2b2lkIGJ1aWxkIChpbnQgYVtdLCBpbnQgdiwgaW50IGwsIGludCByKXsKCWlmKHI9PWwrMSl7CgkJaWYoYVtsXT09MCkKCQl0cmVlW3ZdPTE7CgllbHNlIHRyZWVbdl09MDsKCQlyZXR1cm47Cgl9CglpbnQgbT0obCtyKS8yOwoJYnVpbGQgKGEsMip2KzEsIGwgLCBtKTsKCWJ1aWxkIChhLDIqdisyLCBtICwgcik7Cgl0cmVlW3ZdPW1lcmdlICh0cmVlWzIqdisxXSx0cmVlWzIqdisyXSk7Cn0KaW50IGdldChpbnQgdiwgIGludCBsLCBpbnQgciwgaW50IGspewoJaWYoci0xPT1sKXsKCQlyZXR1cm4gbDsKCX0KCWludCBtPShsK3IpLzI7CglpZih0cmVlWzIqdisxXT49ayl7CgkJIHJldHVybiBnZXQoMip2KzEsIGwsIG0gLCBrKTsKCX0gZWxzZSB7CgkJcmV0dXJuIGdldCgyKnYrMiwgbSAsIHIgLCBrLXRyZWVbMip2KzFdKTsKCX0KfQppbnQgbWFpbigpIHsKCWludCBuOwoJY2luPj5uOwoJaW50IGFbbl07Cglmb3IoaW50IGk9MDsgaTxuOyBpKyspewoJCWNpbj4+YVtpXTsKCX0KCXRyZWUucmVzaXplKDQqbik7CglidWlsZChhLDAsMCxuKTsKCWludCBrOwoJY2luPj5rOwoJZm9yKGludCBpPTA7IGk8azsgaSsrKXsKCQlpbnQgcTsKCQljaW4+PnE7CgkJaWYodHJlZVswXTxxKSBjb3V0PDwtMTw8IiAiOwoJCWVsc2UgY291dDw8Z2V0KDAsMCxuLHEpKzE8PCIgIjsKCQkKCX0KfQ==