CF2071B Perfecto

题目描述

若一个长度为 $n$ 的排列 $p$ $^{\text{∗}}$ 满足:对于每个下标 $i$($1 \le i \le n$),前 $i$ 个元素的和 $p_1 + p_2 + \ldots + p_i$ 不是完全平方数 $^{\text{†}}$,则称该排列为完美排列。 你需要构造完美排列。给定正整数 $n$,找出一个长度为 $n$ 的完美排列,若不存在则输出 $-1$。 $^{\text{∗}}$ 长度为 $n$ 的排列是指由 $1$ 到 $n$ 的 $n$ 个不同整数按任意顺序组成的数组。例如,$[2,3,1,5,4]$ 是排列,但 $[1,2,2]$ 不是排列(数字 $2$ 重复出现),$[1,3,4]$ 也不是排列(当 $n=3$ 时出现数字 $4$)。 $^{\text{†}}$ 完全平方数是指某个整数的平方,例如 $9=3^2$ 是完全平方数,但 $8$ 和 $14$ 不是。

输入格式

每个测试包含多个测试用例。第一行包含测试用例数量 $t$($1 \le t \le 10^4$)。接下来是各个测试用例的描述。 每个测试用例仅包含一行,包含一个整数 $n$($1 \le n \le 5 \cdot 10^5$)。 保证所有测试用例的 $n$ 之和不超过 $10^6$。

输出格式

对于每个测试用例: - 若无解,输出单个整数 $-1$; - 否则,输出 $n$ 个整数 $p_1,p_2,\ldots,p_n$ —— 你找到的完美排列。 若存在多个解,输出任意一个即可。

说明/提示

第一个测试用例中,当 $n = 1$ 时唯一可能的排列是 $p = [1]$,但它不满足完美条件: - $p_1 = 1 = x^2$(当 $x = 1$ 时成立)。 第二个测试用例中,当 $n = 4$ 时一个可能的完美排列是 $p = [2, 4, 1, 3]$: - $p_1 = 2 \neq x^2$; - $p_1 + p_2 = 2 + 4 = 6 \neq x^2$; - $p_1 + p_2 + p_3 = 2 + 4 + 1 = 7 \neq x^2$; - $p_1 + p_2 + p_3 + p_4 = 2 + 4 + 1 + 3 = 10 \neq x^2$。 第三个测试用例中,当 $n = 5$ 时一个可能的完美排列是 $p = [5, 1, 4, 3, 2]$: - $p_1 = 5 \neq x^2$; - $p_1 + p_2 = 5 + 1 = 6 \neq x^2$; - $p_1 + p_2 + p_3 = 5 + 1 + 4 = 10 \neq x^2$; - $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$。 翻译由 DeepSeek R1 完成