#include <stdio.h>
#include <string.h>

long long toint(int *b, int sz){
	
	long long ans = 0, d = 1;
	
	for(int i = 0; i < sz; ++i){
		ans += b[i] * d;
		d <<= 1;
	}
	
	return ans;	
}

void chaa(int *b, int sz){
	
	int u = -1, z = -1;
	
	for(int i = 0; i < sz; ++i)
		if(b[i] == 1){
			u = i;
			break;
		}
	
	for(int i = sz - 1; i >= 0; --i)
		if(b[i] == 0){
			z = i;
			break;
		}
	
	if(u != -1 && z != -1){
		b[z] = 1;
		b[u] = 0;
	}
	
}

int main(){
	
	//freopen("file", "r", stdin);
	
	int N; scanf("%d", &N);
	
	int b[100];
	
	for(; N > 0; --N){
		long long v;	scanf("%lld", &v);
		
		memset(b, 0, sizeof(b));
		
		int sz = 0;
		
		long long y = v;
		
		while(v > 0){
			if(v & 1)
				b[sz] = 1;
			
			v >>= 1;
			sz++;
		}
		
		if(sz < 2){
			printf("%lld ", y);
			continue;
		}
		
		chaa(b, sz);
		long long r = toint(b, sz);

		
		if(r > y)
			printf("%lld ", r);
		else
			printf("%lld ", y);
	}
	
	
return 0;	
}