#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define endl '\n'
const double PI = acos(-1);
const double dError = -1e-9;
const int mod = 1e9+7;
const int N = 1e5+5;
bool isPrime[N];
int dp[N];
vector<int> primes;
vector<int> idx(N+1);
int n;
bool check(int i){
int &ret = dp[i];
if(~ret) return ret;
ret = 0;
for(auto j : primes){
if(i+j<=n&&i+j>=1&&idx[i+j]<idx[i]){
ret |= !check(i+j);
}
if(i-j>n) cout<<5/0<<endl;
if(i-j>=1&&i-j<=n&&idx[i-j]<idx[i]){
ret |= !check(i-j);
}
}
return ret;
}
void solve(){
cin>>n;
if(dp[n]){
for(int i=1;i<n;i++) cout<<i<<' ';
cout<<n<<endl;
return;
}
int lst = -1;
for(int i=1;i<=n;i++){
if(dp[i]) lst = i;
idx[i] = i;
}
if(lst == -1){
cout<<-1<<endl;
return;
}
map<int,int> mp;
vector<int> tmp;
for(int i=1;i<=n;i++){
mp[i] = dp[i];
if(i>=lst)tmp.push_back(i);
}
vector<int> ans;
do{
for(int i=1;i<=n;i++) dp[i] = -1;
int in = 0;
for(int i=lst;i<=n;i++){
if(tmp[i-lst] == n) in=i;
idx[i] = tmp[i-lst];
}
if(check(in)){
if(ans.size() == 0) ans = tmp;
else {
for(int j=0;j<ans.size();j++){
if(ans[j]>tmp[j]){
ans = tmp;
break;
}
else if(ans[j]<tmp[j]) break;
}
}
}
}while(next_permutation(tmp.begin(),tmp.end()));
for(int i=1;i<lst;i++) cout<<i<<' ';
int sz = ans.size();
for(int i=0;i<sz-1;i++) cout<<ans[i]<<' ';
cout<<ans.back()<<endl;
for(auto i : mp) {
dp[i.first] = i.second;
}
}
int main(){
ios_base::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
int t=1;
cin>>t;
memset(isPrime,1,sizeof(isPrime));
isPrime[1] = 0;
for(int i=2;i*i<N;i++){
if(!isPrime[i]) continue;
for(int j=i*i;j<N;j+=i){
isPrime[j] = 0;
}
primes.push_back(i);
}
dp[1] = 0;
dp[2] = 0;
vector<int> tmp2;
for(int i=3;i<N;i++){
for(auto j : primes){
if(j>=i) break;
dp[i] |= !(dp[i-j]);
}
}
while(t--){
solve();
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CnR5cGVkZWYgbG9uZyBsb25nIGxsOwojZGVmaW5lIGVuZGwgJ1xuJwpjb25zdCBkb3VibGUgUEkgPSBhY29zKC0xKTsKY29uc3QgZG91YmxlIGRFcnJvciA9IC0xZS05Owpjb25zdCBpbnQgbW9kID0gMWU5Kzc7CmNvbnN0IGludCBOID0gMWU1KzU7CmJvb2wgaXNQcmltZVtOXTsKaW50IGRwW05dOwp2ZWN0b3I8aW50PiBwcmltZXM7CnZlY3RvcjxpbnQ+IGlkeChOKzEpOwppbnQgbjsKYm9vbCBjaGVjayhpbnQgaSl7CiAgICBpbnQgJnJldCA9IGRwW2ldOwogICAgaWYofnJldCkgcmV0dXJuIHJldDsKICAgIHJldCA9IDA7Cglmb3IoYXV0byBqIDogcHJpbWVzKXsKCQlpZihpK2o8PW4mJmkraj49MSYmaWR4W2kral08aWR4W2ldKXsKCQkJcmV0IHw9ICFjaGVjayhpK2opOwoJCX0KCQlpZihpLWo+bikgY291dDw8NS8wPDxlbmRsOwoJCWlmKGktaj49MSYmaS1qPD1uJiZpZHhbaS1qXTxpZHhbaV0pewogICAgICAgICAgICByZXQgfD0gIWNoZWNrKGktaik7CgkJfQoJfQoJcmV0dXJuIHJldDsKfQp2b2lkIHNvbHZlKCl7CgljaW4+Pm47CglpZihkcFtuXSl7CiAgICAgICAgZm9yKGludCBpPTE7aTxuO2krKykgY291dDw8aTw8JyAnOwogICAgICAgIGNvdXQ8PG48PGVuZGw7CiAgICAgICAgcmV0dXJuOwoJfQoJaW50IGxzdCA9IC0xOwoJZm9yKGludCBpPTE7aTw9bjtpKyspewoJCWlmKGRwW2ldKSBsc3QgPSBpOwogICAgICAgIGlkeFtpXSA9IGk7Cgl9CglpZihsc3QgPT0gLTEpewogICAgICAgIGNvdXQ8PC0xPDxlbmRsOwogICAgICAgIHJldHVybjsKCX0KCW1hcDxpbnQsaW50PiBtcDsKCXZlY3RvcjxpbnQ+IHRtcDsKCWZvcihpbnQgaT0xO2k8PW47aSsrKXsKICAgICAgICBtcFtpXSA9IGRwW2ldOwogICAgICAgIGlmKGk+PWxzdCl0bXAucHVzaF9iYWNrKGkpOwoJfQoJdmVjdG9yPGludD4gYW5zOwoJZG97CiAgICAgICAgZm9yKGludCBpPTE7aTw9bjtpKyspIGRwW2ldID0gLTE7CiAgICAgICAgaW50IGluID0gMDsKICAgICAgICBmb3IoaW50IGk9bHN0O2k8PW47aSsrKXsKICAgICAgICAgICAgaWYodG1wW2ktbHN0XSA9PSBuKSBpbj1pOwogICAgICAgICAgICBpZHhbaV0gPSB0bXBbaS1sc3RdOwogICAgICAgIH0KICAgICAgICBpZihjaGVjayhpbikpewogICAgICAgICAgICBpZihhbnMuc2l6ZSgpID09IDApIGFucyA9IHRtcDsKICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICBmb3IoaW50IGo9MDtqPGFucy5zaXplKCk7aisrKXsKICAgICAgICAgICAgICAgICAgICBpZihhbnNbal0+dG1wW2pdKXsKICAgICAgICAgICAgICAgICAgICAgICAgYW5zID0gdG1wOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZihhbnNbal08dG1wW2pdKSBicmVhazsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCX13aGlsZShuZXh0X3Blcm11dGF0aW9uKHRtcC5iZWdpbigpLHRtcC5lbmQoKSkpOwoJZm9yKGludCBpPTE7aTxsc3Q7aSsrKSBjb3V0PDxpPDwnICc7CglpbnQgc3ogPSBhbnMuc2l6ZSgpOwoJZm9yKGludCBpPTA7aTxzei0xO2krKykgY291dDw8YW5zW2ldPDwnICc7Cgljb3V0PDxhbnMuYmFjaygpPDxlbmRsOwogICAgZm9yKGF1dG8gaSA6IG1wKSB7CiAgICAgICAgZHBbaS5maXJzdF0gPSBpLnNlY29uZDsKICAgIH0KfQppbnQgbWFpbigpewoJaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbygwKTsKCWNpbi50aWUoMCk7CQkgY291dC50aWUoMCk7CglpbnQgdD0xOwoJY2luPj50OwoJbWVtc2V0KGlzUHJpbWUsMSxzaXplb2YoaXNQcmltZSkpOwoJaXNQcmltZVsxXSA9IDA7Cglmb3IoaW50IGk9MjtpKmk8TjtpKyspewoJCWlmKCFpc1ByaW1lW2ldKSBjb250aW51ZTsKCQlmb3IoaW50IGo9aSppO2o8TjtqKz1pKXsKCQkJaXNQcmltZVtqXSA9IDA7CgkJfQoJCXByaW1lcy5wdXNoX2JhY2soaSk7Cgl9CglkcFsxXSA9IDA7CglkcFsyXSA9IDA7Cgl2ZWN0b3I8aW50PiB0bXAyOwoJZm9yKGludCBpPTM7aTxOO2krKyl7CgkJZm9yKGF1dG8gaiA6IHByaW1lcyl7CgkJCWlmKGo+PWkpIGJyZWFrOwoJCQlkcFtpXSB8PSAhKGRwW2ktal0pOwoJCX0KCX0KCXdoaWxlKHQtLSl7CgkJc29sdmUoKTsKCX0KCXJldHVybiAwOwp9