유명한 게임 쇼가 또 한 시즌으로 돌아왔습니다. 이번에는 XOR 버전입니다! 쇼는 다음과 같이 진행됩니다. 참가자는 처음에 비어 있는 숫자 주머니를 가지고 있습니다. 이후 $n$번의 라운드가 순서대로 진행됩니다. 각 라운드에서 참가자에게 $[0; 2^k-1]$에서 균등하게 무작위로 선택한 정수 하나가 제시됩니다. 참가자는 이 수를 주머니에 넣거나 완전히 건너뛸 수 있습니다. $n$번의 라운드가 모두 끝나면 참가자는 주머니에 있는 수들의 XOR에 해당하는 상금을 받고 떠납니다. 빈 주머니의 XOR은 $0$으로 간주합니다.
참가자는 $n$과 $k$, 그리고 수들이 $[0; 2^k-1]$에서 균등하게 무작위로 생성된다는 사실을 알고 있지만, 각 수의 정확한 값은 모릅니다. 이를 바탕으로 참가자는 상금의 기댓값을 최대화하도록 전략을 최적화합니다. 또한 멋진 쇼를 위해, 최적 전략에서 다음 수를 선택하는 경우와 선택하지 않는 경우의 기댓값이 같다면 참가자는 항상 그 수를 선택합니다.
당신은 이 쇼의 제작자입니다. 내일 쇼에서 사용할 정수들의 목록을 받았으며, 이 정수들은 실제로 균등하게 무작위로 생성되었습니다. 당신은 쇼의 비용을 줄이기 위해 참가자의 상금을 최소화하고 싶습니다. 하지만 숫자 자체를 바꾸면 지나친 의심을 살 수 있으므로, 참가자에게 숫자를 제시하는 순서만 바꾸려고 합니다. 물론 이 작업은 비밀리에 이루어지며 참가자를 포함한 누구도 이러한 조작을 모르므로, 참가자의 전략은 그대로 유지됩니다. 참가자가 가능한 한 적은 돈을 받도록 하는 숫자들의 순서를 하나 찾아 주세요!
입력
첫 번째 줄에는 두 정수 $k$, $n$이 주어집니다 ($4 \le k \le 18$, $10k \le n \le 2 \cdot 10^5$).
다음 줄에는 $n$개의 정수 $a_1, a_2, \ldots, a_n$이 주어집니다 ($0 \le a_i < 2^k$). 이 정수들은 균등하게 무작위로 생성되었음이 보장됩니다.
이 문제에는 90개의 테스트가 있습니다. $4 \le k \le 18$인 각 $k$에 대해 6개의 테스트가 있으며, $n$의 값은 양 끝을 포함하여 $10k$부터 $2 \cdot 10^5$까지 등차수열로 분포합니다.
출력
최솟값을 달성하도록 배열 $a_1, a_2, \ldots, a_n$을 재배열한 $n$개의 정수를 출력하세요. 답이 여러 개라면 그중 아무거나 출력하세요.
예제
입력 1
4 40 4 12 3 5 9 7 0 6 13 10 12 14 14 7 2 8 3 4 2 3 4 9 13 4 13 6 10 2 0 10 4 9 15 13 10 8 6 7 14 3
출력 1
***
참고
페이지에 맞추기 위해 예제 입력에 여러 줄바꿈을 추가했습니다. 실제 입력은 입력 설명을 따릅니다.
첫 번째 테스트의 답은 의도적으로 보여 주지 않습니다. 출력 형식을 따르세요.