#include #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; if (popcount(N) <= 1) { output(-1); } else { ui64 answer = 0; bool necessary = false; for (i64 i = 0; i < 32; i++) { if (necessary) { if ((N >> i) & 1) { necessary = false; break; } } else { if ((N >> i) & 1) { necessary = true; } } if (necessary) { answer |= (1UL << i); } } output(answer); } } return 0; }