#include #include #include #include #include #include #include #include #include #include typedef long long i64; typedef unsigned long long ui64; using namespace std; using namespace boost; namespace mp = boost::multiprecision; template inline void output(const T elem) { std::cout << elem << std::endl; } template inline void output(const vector& vec) { for (T elem : vec) { std::cout << elem << " "; } std::cout << std::endl; } int main() { ios::sync_with_stdio(false); cin.tie(nullptr); cout << setprecision(15); i64 T; cin >> T; for (i64 i = 1; i < T+1; i++) { ui64 N; cin >> N; bitset<32> bs(N); bitset<32> ans(0); if (bs.count() <= 1) { output(-1); } else { bool necessary = false; for (i64 i = 0; i < 32; i++) { if (necessary) { if (bs[i] == 1) { necessary = false; break; } } else { if (bs[i] == 1) { necessary = true; } } if (necessary) { ans.set(i); } } output(ans.to_ullong()); } } return 0; }