问题描述
给定一个正整数 n,要求构造一个 1 到 n 的排列(即每个数各出现一次),使得加权和(即所有位置 i 与该位置上数字 a[i] 的乘积之和)能被 3 整除。例如,对于排列 [1,2,3,4],加权和为 1×1 + 2×2 + 3×3 + 4×4 = 30,30 能被 3 整除。
初始排列的性质
我们先考虑初始排列为顺序排列 [1,2,...,n]。此时加权和为 1² + 2² + … + n²。注意:对于任意正整数 i,其平方模 3 的值只有两种情况:
小红希望你构造一个长度为n的排列,满足∑i=1n∗i恰好是3的倍数。 定义排列是一个长度为n的数组,满足ai∈[1,n]且不存在两个元素相同。
第一行输入一个正整数t,代表测试用例的数量。
接下来t行,每行输入一个正整数n。
1≤t≤104
1≤n≤105
保证所有n的总和不超过105。
对于每组测试用例如果无解,请输出−1。
否则输出n个正整数ai,代表小红构造的排列。有多解时输出任意合法解。
输入
2
3
4
输出
-1
1 2 3 4
对于第二组样例,1∗1+2∗2+3∗3+4∗4=30恰好是3的倍数,符合要求。