试炼·终境
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
Special Judge, 64bit IO Format: %lld

题目描述

【题目背景】
MuQ 成功地解开了历史。此时,已经是傍晚了。树叶在晚风中沙沙低语,仿佛在庆祝他的成功。
“_跟随萤火虫的指引...去寻找你旅途的终点吧。_”
一直萤火虫飞到了 MuQ 眼前,像是在向他致意。未等他回应,它便转身飞去。MuQ 毫不迟疑,迈步追向那缕闪烁的光。
萤火虫最终停在一栋古朴的木屋前。MuQ 敲门问,“有人在吗?”
开门的是博弈大师 Papy 。
“你有什么事吗?”
MuQ 向 Papy 急切地诉说着企鹅文明的危机。“你能帮助我吗,能告诉我如何改变历史吗?” MuQ 问道。
Papy 沉默片刻,“我可以帮你……不过,得先赢我一局。”
他侧身让出屋内的光影,一个**数组**在桌上泛着微光。“_胜者才有资格触碰时间的秘密。_”
\hspace{15pt}Papy 有一个长度为 n 的数组 a_1,a_2,\dots,a_n。这个数组是一个排列
\hspace{15pt}现在,Papy 想让 MuQ 打乱 a,使得下式达到最大:

\displaystyle\sum\limits_{i=1}^{n} i\oplus a_i

\hspace{15pt}为了保证 MuQ 不是猜出来的答案,Papy 会让 MuQ 解决这个问题 T 次。

【名词解释】
\hspace{15pt}长度为 n排列:由 1,2,\dots,nn 个整数、按任意顺序组成的数组(每个整数均恰好出现一次)。例如,\{2,3,1,5,4\} 是一个长度为 5 的排列,而 \{1,2,2\}\{1,3,4\} 都不是排列,因为前者存在重复元素,后者包含了超出范围的数。
\hspace{15pt}按位异或\oplus):对两个整数的二进制表示按位进行异或运算。如果您需要更多位运算相关的知识,可以参考 OI-Wiki的相关章节

输入描述:

\hspace{15pt}每个测试文件均包含多组测试数据。第一行输入一个整数 T\left(1\leq T\leq 100\right) 代表数据组数,每组测试数据描述如下:
\hspace{15pt}在一行上输入一个整数 n\left(1 \le n \le 5 \times 10^5\right),表示排列的长度。
\hspace{15pt}除此之外,保证单个测试文件的 n 之和不超过 5 \times 10^5

输出描述:

\hspace{15pt}对于每一组测试数据,新起一行输出 n 个整数,表示构造出的排列。
\hspace{15pt}如果存在多个解决方案,您可以输出任意一个,系统会自动判定是否正确。注意,自测运行功能可能因此返回错误结果,请自行检查答案正确性。
示例1

输入

复制
2
3
6

输出

复制
2 3 1
6 5 4 3 2 1