#include<iostream>
#include<cstdio>
#include<vector>
#include<algorithm>
using namespace std;
vector<int> vals(465);
vector<int>::iterator it;
void initalize()
{
int x=0;
for(int i=0;i<=30;i++)
{
for(int j=i+1;j<=30;j++)
{
vals[x] = (1<<i) + (1<<j) ;
x++;
}
}
sort(vals.begin(),vals.end());
/*for(vector<int>::iterator it=vals.begin();it!=vals.end();it++)
{
cout<<*it<<" ";
}*/
}
int BS(int L,int R,int x,int prev,int current)
{
if(R >= L)
{
int mid = L + (L+(R-L)/2);
if(vals[mid]==x)
return 0;
else if(vals[mid]>x)
{
prev = vals[mid];current= vals[mid]-1;
return BS(L,vals[mid]-1,x,prev,current);
}
else if(vals[mid]<x)
{
prev = vals[mid];current= vals[mid]+1;
return BS(vals[mid]+1,R,x,prev,current);
}
}
else
{
int rem1,rem2;
if(prev <=x)
rem1= x-prev;
else
rem1 = prev - x;
if(current <=x)
rem2 = x-current;
else
rem2 = current-x;
if(rem1>=rem2)
return rem2;
else
return rem1;
}
}
int main()
{
initalize();
int t;
scanf("%d\n",&t);
while(t--)
{
printf("hel\n");
int n;
scanf("%d\n",&n);
it = find(vals.begin(),vals.end(),n);
if(it!=vals.end())
printf("0");
else
{
printf("hello\n");
int prev=0,L=0,R=465,x=n,current=0;
int c=BS(L,R,x,prev,current);
cout<<c<<endl;
}
}
return 0;
}
I2luY2x1ZGU8aW9zdHJlYW0+CiNpbmNsdWRlPGNzdGRpbz4KI2luY2x1ZGU8dmVjdG9yPgojaW5jbHVkZTxhbGdvcml0aG0+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKdmVjdG9yPGludD4gdmFscyg0NjUpOwp2ZWN0b3I8aW50Pjo6aXRlcmF0b3IgaXQ7Cgp2b2lkIGluaXRhbGl6ZSgpCnsKCWludCB4PTA7Cglmb3IoaW50IGk9MDtpPD0zMDtpKyspCgl7CgkJZm9yKGludCBqPWkrMTtqPD0zMDtqKyspCgkJewoJCQl2YWxzW3hdID0gKDE8PGkpICsgKDE8PGopIDsKCQkJeCsrOwoJCX0KCX0KCXNvcnQodmFscy5iZWdpbigpLHZhbHMuZW5kKCkpOwoJLypmb3IodmVjdG9yPGludD46Oml0ZXJhdG9yIGl0PXZhbHMuYmVnaW4oKTtpdCE9dmFscy5lbmQoKTtpdCsrKQoJCXsKCQkJY291dDw8Kml0PDwiICI7CgkJfSovCn0KaW50IEJTKGludCBMLGludCBSLGludCB4LGludCBwcmV2LGludCBjdXJyZW50KQp7CglpZihSID49IEwpCgl7CgkJaW50IG1pZCA9IEwgKyAoTCsoUi1MKS8yKTsKCQlpZih2YWxzW21pZF09PXgpCgkJCXJldHVybiAwOwoJCWVsc2UgaWYodmFsc1ttaWRdPngpCgkJewoJCQlwcmV2ID0gdmFsc1ttaWRdO2N1cnJlbnQ9IHZhbHNbbWlkXS0xOwoJCQlyZXR1cm4gQlMoTCx2YWxzW21pZF0tMSx4LHByZXYsY3VycmVudCk7CgkJfQoJCWVsc2UgaWYodmFsc1ttaWRdPHgpCgkJewoJCQlwcmV2ID0gdmFsc1ttaWRdO2N1cnJlbnQ9IHZhbHNbbWlkXSsxOwoJCQlyZXR1cm4gQlModmFsc1ttaWRdKzEsUix4LHByZXYsY3VycmVudCk7CgkJfQoJfQoJZWxzZQoJewoJCWludCByZW0xLHJlbTI7CgkJaWYocHJldiA8PXgpCgkJCXJlbTE9IHgtcHJldjsKCQllbHNlCgkJCXJlbTEgPSBwcmV2IC0geDsKCQlpZihjdXJyZW50IDw9eCkKCQkJcmVtMiA9IHgtY3VycmVudDsKCQllbHNlCgkJCXJlbTIgPSBjdXJyZW50LXg7CgkJaWYocmVtMT49cmVtMikKCQkJcmV0dXJuIHJlbTI7CgkJZWxzZQoJCQlyZXR1cm4gcmVtMTsKCX0KfQoKaW50IG1haW4oKQp7Cglpbml0YWxpemUoKTsKCWludCB0OwoJc2NhbmYoIiVkXG4iLCZ0KTsKCXdoaWxlKHQtLSkKCXsKCQlwcmludGYoImhlbFxuIik7CgkJaW50IG47CgkJc2NhbmYoIiVkXG4iLCZuKTsKCQlpdCA9IGZpbmQodmFscy5iZWdpbigpLHZhbHMuZW5kKCksbik7CgkJaWYoaXQhPXZhbHMuZW5kKCkpCgkJCXByaW50ZigiMCIpOwoJCWVsc2UKCQl7CgkJCXByaW50ZigiaGVsbG9cbiIpOwoJCQlpbnQgcHJldj0wLEw9MCxSPTQ2NSx4PW4sY3VycmVudD0wOwoJCQlpbnQgYz1CUyhMLFIseCxwcmV2LGN1cnJlbnQpOwoJCQljb3V0PDxjPDxlbmRsOwoJCX0KCQkKCQkKCX0KCXJldHVybiAwOwp9