#CF2001B. 生成排列

生成排列

B. 生成排列

  • 每个测试的时间限制:1.5 秒
  • 内存限制:256 MB

题目描述

有一个长度为 nn 的整数序列 aa,初始时每个元素都是 1-1

Misuki 有两台打字机:

  • 第一台从左到右书写,指针初始指向位置 11
  • 第二台从右到左书写,指针初始指向位置 nn

Misuki 会选择其中一台打字机,并反复执行以下操作,直到 aa 变成 [1,2,,n][1, 2, \dots, n] 的一个排列:

  1. 写数字:将 当前不在数组 aa 中的最小正整数 写入 aia_i,其中 ii 是指针当前指向的位置。
    此操作只有当 ai=1a_i = -1 时才能执行。
  2. 回车:将指针返回到它的初始位置(第一台是 11,第二台是 nn)。
  3. 移动指针:将指针移动到下一个位置。
    设当前指针指向 ii
    • 若使用第一台打字机,则 i:=i+1i := i + 1
    • 若使用第二台,则 i:=i1i := i - 1
      此操作只有在移动后 1in1 \le i \le n 时才能执行。

你的任务是构造一个长度为 nn 的排列 pp,使得 aa 变成 pp 所需的最少回车次数,无论 Misuki 使用哪台打字机,都相同。


输入

每个测试包含多个测试用例。
第一行输入一个整数 tt1t5001 \le t \le 500)——测试用例数。
接下来每个测试用例一行,包含一个整数 nn1n21051 \le n \le 2 \cdot 10^5)——排列的长度。

所有测试用例的 nn 之和不超过 21052 \cdot 10^5


输出

对于每个测试用例,输出一行 nn 个整数,表示排列 pp,使得最少回车次数在两台打字机下相同。
如果不可能,输出 1-1

如果有多个有效排列,输出任意一个。


示例

输入:

3
1
2
3

输出:

1
-1
3 1 2

说明

第一个测试用例n=1n = 1,可以使得 a=p=[1]a = p = [1],回车次数为 00

第二个测试用例n=2n = 2,尝试 p=[1,2]p = [1, 2]

  • 使用第一台打字机:最少回车次数为 00
  • 使用第二台打字机:最少回车次数为 11(例如:移动指针 → 写 11 → 回车 → 写 22)。

尝试 p=[2,1]p = [2, 1] 结果也一样,无法使回车次数相同。因此无解,输出 1-1

第三个测试用例n=3n = 3,输出 [3,1,2][3, 1, 2]
对于第一台和第二台打字机,都最少需要 11 次回车才能写出该排列。可以证明无法用 00 次回车写出。