#include #define PAUSE system("pause") #define LLI long long int #define LD long double #define PB push_back #define PF push_front #define MP make_pair #define FORi(i, a, b) for(int i = a; i < b ; ++i) #define FORd(i, a, b) for(int i = a; i > b ; --i) using namespace std; LLI set_max(LLI n){ vector one; int first_one = -1, last_zero=-1; while(n>1){ one.PB(n%2); if (n%2 && first_one==-1){ first_one = one.size() - 1; } if (n%2==0){ last_zero = one.size() - 1; } n /= 2; } int m = one.size(); if (first_one != -1 && last_zero != -1 && first_one < last_zero){ swap(one[first_one], one[last_zero]); } FORi(i,0,m){ n *= 2; n += one[m-i-1]; } return n; } int main() { int n; cin >> n; vector v(n); FORi(i,0,n){ cin >> v[i]; v[i] = set_max(v[i]); cout << v[i] << ' '; } return 0; }