解析:
要求每两个数之间的差为2或3或4,首先想到分奇偶
但是奇偶两端的差太大,所以可以将一个反转,即将两端小的拼在中间。
但是 1、2之间为1,所以可以反转一下2,4
n小于3,不符题意 输出-1
即 7 5 3 1 4 2 6这样子,交换4和2即可
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N=1e5+5;
int t,n,a[N];
signed main(){
scanf("%lld",&t);
while(t--){
scanf("%lld",&n);
if(n<=3) puts("-1");
else{
if(n%2){
for(int i=n;i>0;i-=2) printf("%d ",i);
printf("%d %d ",4,2);
for(int i=6;i<=n;i+=2) printf("%d ",i);
}
else{
for(int i=n-1;i>0;i-=2) printf("%d ",i);
printf("%d %d ",4,2);
for(int i=6;i<=n;i+=2) printf("%d ",i);
}
puts("");
}
}
return 0;
}