Copiado al portapapeles
Descripción
LeonelCheemsi es un entusiasta de las computadoras; de hecho, esta pasion fue la razon por la que decidio estudiar Informatica. Durante sus tiempos libres, mientras espera su trufi, suele crear acertijos relacionados con la programacion.
Recientemente, su mejor amigo Miguel Angel le proporciono una lista de $N$ numeros enteros. Cheemsi, descubrio un fenomeno interesante al manipular los bits de estos numeros. Especificamente, encontro una operacion que permite intercambiar el $k$-esimo bit de dos numeros de la lista. Dados los indices $i$, $j$ y $k$, esta operacion intercambia el $k$-esimo bit del entero $a_i$ con el $k$-esimo bit del entero $a_j$, y viceversa.
Cheemsi observo que, aplicando esta operacion una o mas veces, puede transformar grandes numeros en pequeños y viceversa, incluso generando valores que no estaban en la lista original. Inspirado por este hallazgo, se propuso un desafio: quiere reordenar la lista de Miguel Angel de manera que sea lexicograficamente maxima. Esto significa que:
- $a_1$ debe ser el numero mas grande posible
- $a_2$ debe ser el mas grande posible entre las soluciones que maximizan $a_1$
- y asi sucesivamente…
Entrada
La entrada consiste de $t$ casos de prueba, donde cada caso de prueba consta de dos lineas: La primera linea contiene un entero $N$ $(1 \leq N \leq 10^5)$, que representa la cantidad de enteros en la lista de Apolinar. La segunda linea contiene $N$ enteros separados por espacios, correspondientes a la lista original $a_1, a_2, \dots, a_N$. Cada entero satisface la condici'on $0 \leq a_i \leq 10^9$.
La suma de $N$ en todos los casos no execede 10^5.
Salida
El programa debe imprimir una sola linea con los $N$ enteros de la lista reorganizada de manera que sea lexicograficamente maxima, separados por espacios.