#include<iostream>
#include<queue>
#include<algorithm>
using namespace std;
int main(){
   int n;
   cin>>n;
    while(n--){
        int k;
        cin>>k;
        if(k%2==1){
            for(int i=1;i<=k;i++) cout<<i<<" ";
            cout<<endl;
        }
        else if(k==2) cout<<"-1"<<endl;
        else {
            cout<<"4 2 3 1 ";
            for(int i=5;i<=k;i++) cout<<i<<" ";
            cout<<endl;
        }
    }
    return 0;
}
这是AC代码。
下面我将阐述我的思路,我们不妨想想一行连续上升的数列 如 {1 2 3 4)中是不是两两互质,即最大公因数为1,如果当出现
个数为奇数,如{1 2 3)就会发现gcd为偶数;
而对于个数为偶数我进行了特殊处理
比如{1 2 3 4}为3变成{4 2 3 1}为4
而后多的偶数序列仍然保持上升序列
如{4 2 3 1 5 6 7 8 9 10} 读者不妨试试看,其实前4个变成{4 2 3 1}相当于给原gcd+1;
好的难的部分理解完
下面是对部分情况的特判  
即 n=2 和n=1.