CF2091C Combination Lock

题目描述

在 IT Campus "NEIMARK" 中,有几个开发重大编程竞赛题目的绝密房间。要进入其中一个房间,必须通过选择正确的密码来解锁一个圆形锁。该密码每天更新一次。 今天的密码是一个从 $1$ 到 $n$ 的排列$$$^{\text{∗}}$$$,且满足其每个循环位移$$$^{\text{†}}$$$中恰好有一个固定点。也就是说,在每一个循环位移中,存在且仅存在一个元素,其值等于它在排列中的位置。 请输出任意一个满足此条件的有效排列。请注意,有效的排列可能不存在,此时请输出 $-1$。 $$$^{\text{∗}}$$$排列的定义是一个长度为 $n$ 的序列,包含从 $1$ 到 $n$ 的整数,且每个数字恰好出现一次。例如,$(2\ 1\ 3)$、$(1)$、$(4\ 3\ 1\ 2)$ 是排列;而 $(1\ 2\ 2)$、$(3)$、$(1\ 3\ 2\ 5)$ 不是排列。 $$$^{\text{†}}$$$数组的循环位移是指将最后一个元素移动到数组开头得到的数组。一个长度为 $n$ 的排列恰好有 $n$ 个循环位移。

输入格式

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

输出格式

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

说明/提示

在第二个样例中,存在一个排列使得每个循环位移中都有一个固定点(用深红色标出): ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF2091C/97f07d8865b709e2ac05cf6cf0c154be7dc52ee5.png) 第一行表示元素的位置编号,第二行展示了目标排列的所有循环位移。 翻译由 DeepSeek R1 完成