给定一个整数 $n$。请找出一个长度为 $n$ 的(从 $0$ 开始编号的)排列 $p$,满足对于每个整数 $i\in[0,n)$,都有 $p_i\oplus i=p_i+i$。
这里 $\oplus$ 表示按位异或(exclusive-OR)运算。异或是布尔代数中的一种逻辑运算,仅当输入不同(一个为真,另一个为假)时输出为真。换句话说,当且仅当两个输入值不同时,异或返回真值。以下是异或的真值表:
按位异或是一种二进制运算,它对两个长度相等的比特串进行逐位的逻辑异或运算。例如:$0101$(十进制 $5$)$\oplus$ $0011$(十进制 $3$)$= 0110$(十进制 $6$)。
输入格式
第一行包含一个整数 $n$ $(1\leq n\leq 10^6)$,表示排列的长度。
输出格式
输出一行 $n$ 个整数,表示 $p_0, p_1,\dots,p_{n-1}$。如果不存在这样的排列,则输出 $-1$。
样例
样例输入 1
3
样例输出 1
0 2 1