#include #define mp make_pair using namespace std ; const int NR = 100005 ; vector < int > st ; //ifstream in ("date.in") ; int main () { int64_t cnt , n , x , i , sol , maxim , minim ; cin >> n ; while ( n -- ) { cin >> x ; for ( i = 0 ; ( 1 << i ) <= x ; ++ i ) { if ( ( 1 << i ) & x ) st.push_back( i ) ; } if ( st.size() == 1 || st.empty() ) { cout << x << ' ' ; continue ; } bool viz [ 50 ] = {0} ; for ( i = 0 ; i < st.size() - 1 ; ++ i ) viz [ st [ i ] ] = 1 ; for ( i = 0 ; i < st [ st.size() - 1 ] ; ++ i ) if ( viz [ i ] ) minim = i , i = st [ st.size() - 1 ] ; for ( i = st [ st.size() - 1 ] - 1 ; i >= 0 ; -- i ) if ( !viz [ i ] ) maxim = i , i = 0 ; // cout << minim << ' ' << maxim << '\n' ; if ( minim < maxim ) x += ( 1 << maxim ) - ( 1 << minim ) ; cout << x << ' ' ; st.clear() ; } }