#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define popcount __builtin_popcount using namespace std; typedef long long int ll; typedef pair P; template struct SparseTable{ using F=function; const F f; const T e; vector> spt; vector vlog; SparseTable(const F f, const T &e, const vector &v):f(f), e(e){ int b=0, n=v.size(); while((1<(n)); for(int i=0; i>1]+1; } T query(int l, int r){ int b=vlog[r-l]; return f(spt[b][l], spt[b][r-(1<>n; vector a(n); for(int i=0; i=0){ as[i][j]=(as[i-1][j]|as[i-1][j-(1<<(i-1))]); } } } int q; cin>>q; while(q--){ ll b; scanf("%lld", &b); int k=n-1; ll x=(1ll<<60)-1; int ans=0; while(k>=0){ if((x&a[k])>0){ if(((b|a[k])&x)==b){ b^=(x&a[k]); x^=(x&a[k]); k--; }else if(((~b|a[k])&x)==(~b&x)){ ans++; b=(~b&x); b^=(x&a[k]); x^=(x&a[k]); k--; }else{ ans=-1; break; } }else{ for(int t=17; t>=0; t--){ if(k+1-(1<