Lexicograficamente Máximo

#32
Made by: Rafael Grandsire
1024MB
0.1s

Uma lista de $N$ inteiros $a_1 , . . . , a_N$ está armazenada na memória de um dispositivo eletrônico. Este dispositivo possui uma operação muito peculiar disponı́vel: a de troca de bits entre números. Mais precisamente, dados inteiros $i$, $j$ e $k$, tal operação troca o k-ésimo bit do inteiro $a_i$ pelo k-ésimo bit do inteiro $a_j$ (e vice-versa).

Fenômenos muito interessantes podem acontecer ao se realizar tal operação uma ou mais vezes, como a obtenção de números que nem mesmo pertenciam à lista original, ou mesmo números maiores ou menores que todos os elementos originais.

Neste problema, estamos interessados em utilizar a operação tantas vezes quanto necessário para alterar a lista de números de forma que a lista resultante seja a lexicograficamente máxima, isto é, que $a_1$ seja o maior possı́vel, que $a_2$ seja o maior possı́vel dentre as possı́veis soluções que maximizam $a_1$ , e assim por diante.

Input

A primeira linha da entrada contém um inteiro $N$ $(1 ≤ N ≤ 10^5 )$ e a segunda linha contém $N$ inteiros, separados por espaço, correspontes à lista $a_1 , . . . , a_N$ $(0 ≤ a_i ≤ 10^9 )$.

Output

Seu programa deve imprimir uma única linha contendo $N$ inteiros separados por espaço, correspondentes à sequência lexicograficamente máxima que pode ser obtida.


Input Example
Output Example
4
8 4 2 1
15 0 0 0

4
12 15 1 20
31 13 4 0