题目
#include<bits/stdc++.h>
using namespace std;
int main(){
long long n,a[114514],b[114514],q;
long long c=0,two[114];
two[0]=1;
for(int i=1;i<=60;i++){
two[i]=two[i-1]*2;
}
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
b[i]=a[i];
c=a[i]+c;
}
long long dsb[114],l=0;
for(int i=1;i<=n;i++){
int j=0;
while(b[i]){
if(b[i]%2){
dsb[j]++;
}
b[i]=b[i]/2;
j++;
}
}
for(int i=30;i>0;i--){
if(dsb[i]){
l=i;
break;
}
}
cin>>q;
while(q){
long long m,k[114],add=c;
cin>>m;
for(int i=60;i>=0;i--){
if(add+two[i]*(n-2*dsb[i])<=m){
k[i]=1;
add=add+two[i]*(n-2*dsb[i]);
}else{
k[i]=0;
}
}
long long k1=0;
for(int i=60;i>=0;i--){
k1=k1*2;
k1=k1+k[i];
}
if(k1==0&&c>m) cout<<-1<<endl;
else cout<<k1<<endl;
q--;
}
return 0;
}