#include #include #include #include #include #include using namespace std; using namespace atcoder; using ll = long long; using mint = modint998244353; using vi = vector; using vvi = vector; using vvvi = vector; using vll = vector; using vvll = vector; using vvvll = vector; using vmi = vector; using vvmi = vector; using vvvmi = vector; #define all(a) (a).begin(), (a).end() #define rep2(i, m, n) for (int i = (m); i < (n); ++i) #define rep(i, n) rep2(i, 0, n) #define drep2(i, m, n) for (int i = (m)-1; i >= (n); --i) #define drep(i, n) drep2(i, n, 0) int main(){ int t; cin >> t; while(t--){ int n; cin >> n; bitset<32> bs(n); if(bs.count() == 1){ cout << -1 << endl; continue; } bool f = false; rep(i, 31){ if(bs[i] && bs[i+1]){ bitset<32> ans(0); rep(j, 32)ans[j] = (j == i) ? 1 : 0; cout << ans.to_ulong() << endl; f = true; break; } if(f)break; } if(f)continue; int c = 0; rep(i, 32){ if(bs[i]){ c++; } if(c == 2){ bitset<32> ans(0); ans[i+1] = 1; rep2(j, i+2, 32)ans[j] = bs[j]; cout << ans.to_ulong() - n << endl; break; } } } return 0; }