#include using namespace std; long long sol[50], PW[50], pmax, leftP, rightP, p; int main() { PW[0] = 1; for(int i = 1; i <= 31; i ++) { PW[i] = PW[i - 1] * 2; } int N; cin >> N; for(int i = 1; i <= N; i ++) { memset(sol, 0, sizeof(sol)); leftP = 0; rightP = 0; long long x; cin >> x; long long x2 = x; if(x == 0) { cout << x << ' '; continue; } while(x2 > 0) { for(p = 31; p >= 0; p --) { if(PW[p] <= x2) break; } sol[p] = 1; x2 -= PW[p]; pmax = max(pmax, p); } for(int i = pmax; i >= 0; i --) { if(leftP == 0 && sol[i] == 0) { leftP = i; } if(sol[i] == 1) rightP = i; } x2 = 0; for(int i = 0; i <= pmax; i ++) { if(rightP != i) { x2 += PW[i] * sol[i]; } if(leftP == i) { x2 += PW[i]; } } if(x2 > x) { cout << x2 << ' '; } else { cout << x << ' '; } } return 0; }