#include #include #include using namespace std; #define MOD 666013 int main(){ long long n, x, T; char b[45]; scanf("%d", &T); for(long long i = 1; i <= T; i++){ scanf("%lld", &n); long long sets = 0, zeros = 0; memset(b, 0, sizeof(char) * 35); long long m = n; long long k = -1; while(m){ if(m % 2){ b[++k] = 1 + '0'; sets++; }else{ b[++k] = 0 + '0'; zeros++; } m >>= 1; }b[++k] = '\0'; long long len = strlen(b); for(long long i = 0; i <= (len - 1)/ 2; i++){ swap(b[i], b[len-i-1]); } if(sets == 1 || (sets == 2 && b[1] == '1') || !zeros || (zeros == 1 && b[len-1] == '0')){ printf("%lld ", n); continue; } long long e, ch; for(long long i = 0; i < len;i++){ if(b[i] == '0'){ e = i; break; } } for(long long i = len - 1; i > e; i--){ if(b[i] == '1'){ ch = i; break; } } swap(b[e], b[ch]); long long dec = 0; for(long long i = 0; i < len; i++){ dec <<= 1; if(b[i] == '1'){ dec += 1; } } printf("%lld ", dec); } return 0; }