대칭 XOR

시간 제한1초메모리 제한1024 MB

문제

양의 정수 $N$이 주어질 때, 아래 조건을 만족하는 $1$부터 $N$까지의 서로 다른 정수로 이루어진 길이 $N$의 순열 $P={P_1,P_2,\cdots,P_N}$을 만들어 보자.

  • 모든 $1\le i, j \le N$에 대해 $P_i\oplus P_{N-i+1} = P_j\oplus P_{N-j+1}$

입력

첫째 줄에 양의 정수 $N$이 주어진다. $(1 \le N \le 500\,000)$

출력

조건을 만족하는 순열이 존재하면 $P_1, P_2, \cdots, P_N$을 공백으로 구분하여 한 줄에 출력한다. 가능한 순열이 여러 개라면 아무거나 하나를 출력해도 된다.

조건을 만족하는 순열이 없으면 -1을 출력한다.

힌트

$\oplus$은 Bitwise XOR을 나타내는 기호이다. Bitwise XOR은 각 비트 자리에서 두 비트를 비교하여, 같으면 $0$으로, 다르면 $1$로 만든다.

즉, $a$ $\oplus$ $b$의 i번째 비트는 $a$와 $b$의 $i$번째 비트가 다를 때만 $1$이다.

ex) $13$$(1101_2)$ $\oplus$ $10$$(1010_2)$ = $7$$(0111_2)$