#CF2001B. 生成排列
生成排列
B. 生成排列
- 每个测试的时间限制:1.5 秒
- 内存限制:256 MB
题目描述
有一个长度为 的整数序列 ,初始时每个元素都是 。
Misuki 有两台打字机:
- 第一台从左到右书写,指针初始指向位置 。
- 第二台从右到左书写,指针初始指向位置 。
Misuki 会选择其中一台打字机,并反复执行以下操作,直到 变成 的一个排列:
- 写数字:将 当前不在数组 中的最小正整数 写入 ,其中 是指针当前指向的位置。
此操作只有当 时才能执行。 - 回车:将指针返回到它的初始位置(第一台是 ,第二台是 )。
- 移动指针:将指针移动到下一个位置。
设当前指针指向 :- 若使用第一台打字机,则 ;
- 若使用第二台,则 。
此操作只有在移动后 时才能执行。
你的任务是构造一个长度为 的排列 ,使得 将 变成 所需的最少回车次数,无论 Misuki 使用哪台打字机,都相同。
输入
每个测试包含多个测试用例。
第一行输入一个整数 ()——测试用例数。
接下来每个测试用例一行,包含一个整数 ()——排列的长度。
所有测试用例的 之和不超过 。
输出
对于每个测试用例,输出一行 个整数,表示排列 ,使得最少回车次数在两台打字机下相同。
如果不可能,输出 。
如果有多个有效排列,输出任意一个。
示例
输入:
3
1
2
3
输出:
1
-1
3 1 2
说明
第一个测试用例:,可以使得 ,回车次数为 。
第二个测试用例:,尝试 :
- 使用第一台打字机:最少回车次数为 。
- 使用第二台打字机:最少回车次数为 (例如:移动指针 → 写 → 回车 → 写 )。
尝试 结果也一样,无法使回车次数相同。因此无解,输出 。
第三个测试用例:,输出 。
对于第一台和第二台打字机,都最少需要 次回车才能写出该排列。可以证明无法用 次回车写出。