/*** https://mindcoding.ro/pb/bits ***/

#include <iostream>
#include <math.h>

using namespace std;
int main()
{
    int N;
    cin >> N;

    int* numbers = new int[N];
    for (int i = 0; i < N; i++) {
        cin >> numbers[i];
    }

    for (int i = 0; i < N; i++) {
        int currentNumber = numbers[i];
        int* numberBits = new int[32];
        int currentBitPosition = 0;
        while (currentNumber > 0) {
            numberBits[currentBitPosition] = currentNumber % 2;
            currentNumber /= 2;
            currentBitPosition++;
        }

        int potentialSwapIndex = -1;
        for (int j = currentBitPosition - 1; j >= 0; j--) {
            if (numberBits[j] == 0 && potentialSwapIndex == -1) {
                potentialSwapIndex = j;
            }

            if (numberBits[j] == 1 && potentialSwapIndex != -1) {
                numberBits[j] = 0;
                numberBits[potentialSwapIndex] = 1;
                break;
            }
        }

        int maxNumber = 0;
        for (int j = 0; j < currentBitPosition; j++) {
            maxNumber += numberBits[j] * pow(2, j);
        }

        cout << maxNumber << " ";
    }

    return 0;
}