琪露诺的排列构造
题号:NC307912
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
Special Judge, 64bit IO Format: %lld

题目描述

\hspace{15pt}在雾之湖的旁边,琪露诺发现了一排有编号的冰块,她想把一些冰晶放在这些冰块上。每个冰晶也有一个编号。
\hspace{15pt}琪露诺想出了一个游戏:她要把冰晶放在冰块上,使得没有冰晶放在编号相同的冰块上,并且每个冰块和冰晶的编号之和都不同。这样,她就可以施展一个强大的冰魔法。现在,请你帮助琪露诺完成这个排列。
\hspace{15pt}形式化地说,你需要构造一个长度为 n排列 p,记排列的第 i 个元素为 p_i,排列需要满足以下条件:
\hspace{23pt}\bullet\,对于任意的 i \in [1,n],都有 p_i \not = i
\hspace{23pt}\bullet\,对于任意的 1 \le i < j \le n,都有 p_i+i \not = p_j+j
\hspace{15pt}你可以输出任意一个满足条件的排列,或者向琪露诺证明这是不可能的。

【名词解释】
\hspace{15pt}长度为 n排列:由 1,2,\dots,nn 个整数、按任意顺序组成的数组(每个整数均恰好出现一次)。例如,\{2,3,1,5,4\} 是一个长度为 5 的排列,而 \{1,2,2\}\{1,3,4\} 都不是排列,因为前者存在重复元素,后者包含了超出范围的数。

输入描述:

\hspace{15pt}每个测试文件均包含多组测试数据。第一行输入一个整数 T\left(1\leq T\leq 10^5\right) 代表数据组数,每组测试数据描述如下:

\hspace{15pt}在一行上输入一个整数 n\left(1 \le n \le 10^{5}\right),表示排列的长度。

\hspace{15pt}除此之外,保证单个测试文件的 n 之和不超过 10^5

输出描述:

\hspace{15pt}对于每一组测试数据,新起一行。如果不存在满足条件的排列,直接输出 -1;否则,在一行上输出 n 个整数 p_1,p_2,\dots,p_n,表示满足条件的排列。

\hspace{15pt}如果存在多个解决方案,您可以输出任意一个,系统会自动判定是否正确。注意,自测运行功能可能因此返回错误结果,请自行检查答案正确性。
示例1

输入

复制
2
2
3

输出

复制
-1
2 3 1

说明

\hspace{15pt}对于第一组测试数据,长度为 n 的排列有且仅有:
\hspace{23pt}\bullet\,\{1,2\},不满足 p_i \not = i
\hspace{23pt}\bullet\,\{2,1\},不满足 p_i+i 两两不同。
\hspace{15pt}综上,不存在满足条件的排列。