CF2091C.Combination Lock

传统题 时间 2000 ms 内存 256 MiB 5 尝试 1 已通过 1 标签

Combination Lock

题目描述

在 IT Campus "NEIMARK" 中,有几个开发重大编程竞赛题目的绝密房间。要进入其中一个房间,必须通过选择正确的密码来解锁一个圆形锁。该密码每天更新一次。

今天的密码是一个从 11nn 的排列^{\text{∗}},且满足其每个循环位移^{\text{†}}中恰好有一个固定点。也就是说,在每一个循环位移中,存在且仅存在一个元素,其值等于它在排列中的位置。

请输出任意一个满足此条件的有效排列。请注意,有效的排列可能不存在,此时请输出 1-1

^{\text{∗}}排列的定义是一个长度为 nn 的序列,包含从 11nn 的整数,且每个数字恰好出现一次。例如,(2 1 3)(2\ 1\ 3)(1)(1)(4 3 1 2)(4\ 3\ 1\ 2) 是排列;而 (1 2 2)(1\ 2\ 2)(3)(3)(1 3 2 5)(1\ 3\ 2\ 5) 不是排列。

^{\text{†}}数组的循环位移是指将最后一个元素移动到数组开头得到的数组。一个长度为 nn 的排列恰好有 nn 个循环位移。

输入格式

每个测试包含多个测试用例。第一行包含测试用例的数量 tt (1t5001 \leq t \leq 500)。接下来是每个测试用例的描述。

每个测试用例单独一行,包含一个整数 nn (1n21051 \leq n \leq 2 \cdot 10^5)。

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

输出格式

对于每个测试用例,输出满足条件的排列。如果存在多个解,输出任意一个即可。如果不存在符合条件的排列,输出 1-1

说明/提示

在第二个样例中,存在一个排列使得每个循环位移中都有一个固定点(用深红色标出):


第一行表示元素的位置编号,第二行展示了目标排列的所有循环位移。

翻译由 DeepSeek R1 完成

样例

3
4
5
3
-1
4 1 3 5 2
1 3 2

在线编程 IDE

建议全屏模式获得最佳体验