解题思路
题目要求把 1∼n 排成一个长度为 n 的排列,并且对每个二元组 (ai−1,ai)(其中 i 为偶数),都满足:
- ai−1+ai 不是质数;
- ∣ai−1−ai∣ 不是质数。
这本质上是一个“按对构造”的题。因为只要求每两个位置组成的二元组合法,所以我们只需要把整个排列拆成若干合法数对,再顺次输出即可。
题目内容
Tk 很喜欢满足以下所有条件的二元组(x,y):
- x+y不是质数;
- ∣x−y∣ 不是质数。
Tk的好朋友送给他一个长度为 n 的排列 {a1,a2,…,an},其中n为偶数。
Tk希望对于任意的 2≤i≤n 且i mod 2=0,二元组(ai−1,ai)都是Tk喜欢的二元组。
Tk找到了你,希望你能构造出满足条件的排列;如果不存在解,则输出−1。
名词解释
- 质数:一个大于 1 的正整数,如果除了 1 和它自身以外不再有其他整数可以将其整除,那么这个数被称作质数。特殊地,1 既不是质数也不是合数。
- 长度为n的排列:由 1,2,…,n这 n个整数,按任意顺序组成的数组(每个整数均恰好出现一次)。例如,{2,3,1,5,4} 是一个长度为5的排列,而 {1,2,2} 和 {1,3,4} 都不是排列,因为前者存在重复元素,后者包含了超出范围的数
输入描述
每个测试文件均包含多组测试数据。第一行输入一个整数T(1≤T≤104)代表数据组数,每组测试数据描述如下:
- 在一行上输入一个整数n(2≤n≤2×105),表示排列的长度;题目保证 n为偶数。
除此之外,保证单个测试文件的所有 n 之和不超过 2×105。
输出描述
对于每一组测试数据,新起一行输出n 个整数表示你构造的排列;如果不存在解,则输出−1。
如果存在多个解决方案,您可以输出任意一个,系统会自动判定是否正确。注意,自测运行功能可能因此返回错误结果,请自行检查答案正确性
样例1
输入
2
2
12
输出
-1
7 8 5 4 1 9 2 12 3 11 6 10
说明
- 长度为 2 的排列只有 {1,2},{2,1} 两种,他们 a1+a2 均为3 是质数,无解。
- 第二个测试数据满足题目答案。