B. 完美排列
每个测试的时间限制:1.5 秒
每个测试的内存限制:256 MB
一个长度为 n 的排列 p 被称为完美的,如果对于每个下标 i(1≤i≤n),它满足以下条件:
前 i 个元素的和 p1+p2+⋯+pi 不是完全平方数†。
你希望得到完美的结果。给定一个正整数 n,请找出一个长度为 n 的完美排列,如果不存在则输出 −1。
∗
长度为 n 的排列是一个由 n 个不同的整数 1 到 n 组成的数组,顺序任意。
例如,[2,3,1,5,4] 是一个排列,但 [1,2,2] 不是排列(2 出现了两次),[1,3,4] 也不是排列(n=3 但数组中出现了 4)。
†
完全平方数是一个整数的平方,例如 9=32 是完全平方数,但 8 和 14 不是。
输入格式
每个测试包含多个测试用例。
第一行包含测试用例的数量 t(1≤t≤104)。
接下来每个测试用例的一行包含一个整数 n(1≤n≤5⋅105)。
保证所有测试用例的 n 之和不超过 106。
输出格式
对于每个测试用例:
- 如果不存在解,输出一个整数 −1。
- 否则,输出 n 个整数 p1,p2,…,pn —— 你找到的完美排列。
如果存在多个解,输出任意一个即可。
示例
输入
3
1
4
5
输出
-1
2 4 1 3
5 1 4 3 2
说明
第一个测试用例
长度为 n=1 时只有一个排列 p=[1],它不完美,因为:
p1=1=x2(x=1)
第二个测试用例
n=4 的一个可能的完美排列是 p=[2,4,1,3]:
p1=2=x2
p1+p2=2+4=6=x2
p1+p2+p3=2+4+1=7=x2
$$p_1 + p_2 + p_3 + p_4 = 2 + 4 + 1 + 3 = 10 \neq x^2
$$
第三个测试用例
n=5 的一个可能的完美排列是 p=[5,1,4,3,2]:
p1=5=x2
p1+p2=5+1=6=x2
p1+p2+p3=5+1+4=10=x2
$$p_1 + p_2 + p_3 + p_4 = 5 + 1 + 4 + 3 = 13 \neq x^2
$$$$p_1 + p_2 + p_3 + p_4 + p_5 = 5 + 1 + 4 + 3 + 2 = 15 \neq x^2
$$