// MOHIT KUMAR
#pragma GCC optimize ("O3")
#pragma GCC target ("sse4")
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef long double ld;
typedef complex<ld> cd;
typedef pair<int, int> pin;
typedef pair<ll, ll> pl;
typedef pair<ld, ld> pd;
#define ff(i, a, b) for ( ll i=a; i<(b); i++)
#define ffd(i, a, b) for ( ll i=a; i<= b; i++)
#define fr(i, a, b) for ( ll i = (b)-1; i >= a; i--)
#define ffr(i, a, b) for ( ll i = b ; i >= a; i--)
#define vl vector < ll >
#define vp vector < pl >
#define endl "\n"
#define sz(x) (ll)(x).size()
#define mp make_pair
#define pb push_back
#define f first
#define s second
#define lb lower_bound
#define ub upper_bound
#define all(x) x.begin(), x.end()
#define rall(x) x.rbegin(), x.rend()
const ld pi = acos(-1) ;
const ll maxn = 3e5 + 5 ;
const int mod = 998244353 ;
const ll INF = 1e18 ;
const int MX = 2000000001 ; // check the limits, dummy
vl lps(maxn, 0) ; // longest prefix array which is also a suffix
void KMP( string s) {
ll l = 0, r = 1 ;
while (r < s.size()) {
if (s[l] == s[r]) {
lps[r++] = ++l ;
}
else {
l = 0 ;
lps[r++] = 0;
}
}
ff(i, 0, sz(s)) cout << lps[i] << " " ;
}
void find_sub(string s, string t) {
ll i = 0, j = 0, ans = 0 ;
bool ch = false ;
while (i < s.size()) {
if (s[i] == t[j]) {
j++ ;
i++ ;
if (j == t.size()) {
ans++ ;
cout << "Substring found at " << i - j << " index" << endl ;
// return true ;
j = lps[j - 1] ;
ch = true ;
}
}
else {
if (j) j = lps[j - 1] ;
else i++ ;
}
}
if (!ch) cout << "Substring not found\n" ;
cout << "NUMBER OD OCC" << ans << endl ;
// return false ;
}
ll max_gold_mine() {
ll v[3][1] = {{1}, {2}, {3}};
ll m = 3, n = 1 ;
ll ans = 0 ;
for ( int j = n - 2; j >= 0; j--) {
for ( int i = 0; i < m; i++) {
if (!i) v[i][j] += max(v[i][j + 1], v[i + 1][j + 1]) ;
else if (i == m - 1)v[i][j] += max(v[i][j + 1], v[i - 1][j + 1]) ;
else v[i][j] += max({v[i + 1][j + 1], v[i - 1][j + 1], v[i][j + 1]}) ;
}
}
for ( int i = 0; i < m; i++) ans = max(ans, v[i][0]) ;
return ans ;
}
int optimal_merge( vector < int > v) {
int ans = 0 ;
priority_queue < int , vector < int > , greater < int >> pq;
for (auto x : v) pq.push(x) ;
while (pq.size() != 1) {
int a = pq.top() ;
pq.pop() ;
int b = pq.top() ;
pq.pop() ;
ans += a + b ;
pq.push(a + b) ;
}
return ans ;
}
vl vis(maxn, 0), top, adj[maxn] ;
void dfs( ll u) {
vis[u] = 1 ;
for (auto x : adj[u]) {
if (!vis[x]) dfs(x) ;
}
top.pb(u) ;
}
void topo_sort(vl adj[], ll n) {
ffr(i, 1, n) {
if (!vis[i]) dfs(i) ;
}
reverse(all(top)) ;
cout << "TOPOLOGICAL SORTING OF GRAPH IS\n " ;
for (auto x : top) cout << x << " ";
}
vl v[maxn] ;
vector <double > prob(maxn, 0) ;
void dfs (ll n, ll par) {
ll res = sz(v[n]) ;
if (par != -1) --res ;
for (auto x : v[n]) {
if ( x != par ) {
prob[x] = prob[n] / res ;
dfs(x, n) ;
}
}
}
int main() {
ios_base::sync_with_stdio(0) , cin.tie(0);
ll t, q, n, a, b, c, d, k, l, m, r, x = 0, y = 0, z = 0 , sum = 0, ans = 0, temp = 0, res = 0 ;
cin >> t ;
while (t--) {
cin >> n ;
if (n < 4) cout << "-1\n" ;
vl v ;
ll i ;
if (n & 1) {
i = 1 ;
while (i <= n ) v.pb(i), i += 2 ;
i = n - 1 ;
while (i > 1) v.pb(i), i -= 2 ;
x = 1 + (n + 1) / 2 ;
swap(v[x], v[x - 1]) ;
}
else {
i = 2 ;
while (i <= n) v.pb(i), i += 2 ;
i = n - 1 ;
while (i > 0 ) v.pb(i), i -= 2 ;
x = 1 + n / 2 ;
swap(v[x], v[x - 1]) ;
}
for (auto x : v) cout << x << " ";
cout << endl ;
}
}
Ly8gTU9ISVQgS1VNQVIKI3ByYWdtYSBHQ0Mgb3B0aW1pemUgKCJPMyIpCiNwcmFnbWEgR0NDIHRhcmdldCAoInNzZTQiKQoKI2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKdHlwZWRlZiBsb25nIGxvbmcgbGw7CnR5cGVkZWYgbG9uZyBkb3VibGUgbGQ7CnR5cGVkZWYgY29tcGxleDxsZD4gY2Q7Cgp0eXBlZGVmIHBhaXI8aW50LCBpbnQ+IHBpbjsKdHlwZWRlZiBwYWlyPGxsLCBsbD4gcGw7CnR5cGVkZWYgcGFpcjxsZCwgbGQ+IHBkOwoKI2RlZmluZSBmZihpLCBhLCBiKSBmb3IgKCBsbCBpPWE7IGk8KGIpOyBpKyspCiNkZWZpbmUgZmZkKGksIGEsIGIpIGZvciAoIGxsIGk9YTsgaTw9IGI7IGkrKykKI2RlZmluZSBmcihpLCBhLCBiKSBmb3IgKCBsbCBpID0gKGIpLTE7IGkgPj0gYTsgaS0tKQojZGVmaW5lIGZmcihpLCBhLCBiKSBmb3IgKCBsbCBpID0gYiA7IGkgPj0gYTsgaS0tKQojZGVmaW5lIHZsIHZlY3RvciA8IGxsID4KI2RlZmluZSB2cCB2ZWN0b3IgPCBwbCA+CiNkZWZpbmUgZW5kbCAiXG4iCiNkZWZpbmUgc3ooeCkgKGxsKSh4KS5zaXplKCkKI2RlZmluZSBtcCBtYWtlX3BhaXIKI2RlZmluZSBwYiBwdXNoX2JhY2sKI2RlZmluZSBmIGZpcnN0CiNkZWZpbmUgcyBzZWNvbmQKI2RlZmluZSBsYiBsb3dlcl9ib3VuZAojZGVmaW5lIHViIHVwcGVyX2JvdW5kCiNkZWZpbmUgYWxsKHgpIHguYmVnaW4oKSwgeC5lbmQoKQojZGVmaW5lIHJhbGwoeCkgeC5yYmVnaW4oKSwgeC5yZW5kKCkKCmNvbnN0IGxkIHBpID0gYWNvcygtMSkgOwpjb25zdCBsbCBtYXhuID0gM2U1ICsgNSA7CmNvbnN0IGludCBtb2QgPSA5OTgyNDQzNTMgOwpjb25zdCBsbCBJTkYgPSAxZTE4IDsKY29uc3QgaW50IE1YID0gMjAwMDAwMDAwMSA7IC8vIGNoZWNrIHRoZSBsaW1pdHMsIGR1bW15Cgp2bCBscHMobWF4biwgMCkgOyAvLyBsb25nZXN0IHByZWZpeCBhcnJheSB3aGljaCBpcyBhbHNvIGEgc3VmZml4Cgp2b2lkIEtNUCggc3RyaW5nIHMpIHsKICBsbCBsID0gMCwgciA9IDEgOwogIHdoaWxlIChyIDwgcy5zaXplKCkpIHsKICAgIGlmIChzW2xdID09IHNbcl0pIHsKICAgICAgbHBzW3IrK10gPSArK2wgOwogICAgfQogICAgZWxzZSB7CiAgICAgIGwgPSAwIDsKICAgICAgbHBzW3IrK10gPSAwOwogICAgfQogIH0KICBmZihpLCAwLCBzeihzKSkgY291dCA8PCBscHNbaV0gPDwgIiAiIDsKfQoKdm9pZCBmaW5kX3N1YihzdHJpbmcgcywgc3RyaW5nIHQpIHsKICBsbCBpID0gMCwgaiA9IDAsIGFucyA9IDAgIDsKICBib29sIGNoID0gZmFsc2UgOwogIHdoaWxlIChpIDwgcy5zaXplKCkpIHsKICAgIGlmIChzW2ldID09IHRbal0pIHsKICAgICAgaisrIDsKICAgICAgaSsrIDsKICAgICAgaWYgKGogPT0gdC5zaXplKCkpIHsKICAgICAgICBhbnMrKyA7CiAgICAgICAgY291dCA8PCAiU3Vic3RyaW5nIGZvdW5kIGF0ICIgPDwgaSAtIGogPDwgIiBpbmRleCIgPDwgZW5kbCA7CiAgICAgICAgLy8gcmV0dXJuIHRydWUgOwogICAgICAgIGogPSBscHNbaiAtIDFdIDsKICAgICAgICBjaCA9IHRydWUgOwogICAgICB9CiAgICB9CiAgICBlbHNlIHsKICAgICAgaWYgKGopIGogPSBscHNbaiAtIDFdIDsKICAgICAgZWxzZSBpKysgOwogICAgfQogIH0KICBpZiAoIWNoKSBjb3V0IDw8ICJTdWJzdHJpbmcgbm90IGZvdW5kXG4iIDsKICBjb3V0IDw8ICJOVU1CRVIgT0QgT0NDIiA8PCBhbnMgPDwgZW5kbCA7CiAgLy8gcmV0dXJuIGZhbHNlIDsKfQoKbGwgbWF4X2dvbGRfbWluZSgpIHsKICBsbCB2WzNdWzFdID0ge3sxfSwgezJ9LCB7M319OwogIGxsIG0gPSAzLCBuID0gMSA7CiAgbGwgYW5zID0gMCA7CiAgZm9yICggaW50IGogPSBuIC0gMjsgaiA+PSAwOyBqLS0pIHsKICAgIGZvciAoIGludCBpID0gMDsgaSA8ICBtOyBpKyspIHsKICAgICAgaWYgKCFpKSB2W2ldW2pdICs9IG1heCh2W2ldW2ogKyAxXSwgdltpICsgMV1baiArIDFdKSA7CiAgICAgIGVsc2UgaWYgKGkgPT0gbSAtIDEpdltpXVtqXSArPSBtYXgodltpXVtqICsgMV0sIHZbaSAtIDFdW2ogKyAxXSkgOwogICAgICBlbHNlIHZbaV1bal0gKz0gbWF4KHt2W2kgKyAxXVtqICsgMV0sIHZbaSAtIDFdW2ogKyAxXSwgdltpXVtqICsgMV19KSA7CiAgICB9CiAgfQogIGZvciAoIGludCBpID0gMDsgaSA8IG07IGkrKykgYW5zID0gbWF4KGFucywgdltpXVswXSkgOwogIHJldHVybiBhbnMgOwoKfQoKaW50IG9wdGltYWxfbWVyZ2UoIHZlY3RvciA8IGludCA+IHYpIHsKICBpbnQgYW5zID0gMCA7CiAgcHJpb3JpdHlfcXVldWUgPCBpbnQgLCB2ZWN0b3IgPCBpbnQgPiAsIGdyZWF0ZXIgPCBpbnQgPj4gcHE7CiAgZm9yIChhdXRvIHggOiB2KSBwcS5wdXNoKHgpIDsKICB3aGlsZSAocHEuc2l6ZSgpICE9IDEpIHsKICAgIGludCBhID0gcHEudG9wKCkgOwogICAgcHEucG9wKCkgOwogICAgaW50IGIgPSBwcS50b3AoKSA7CiAgICBwcS5wb3AoKSA7CiAgICBhbnMgKz0gYSArIGIgOwogICAgcHEucHVzaChhICsgYikgOwogIH0KICByZXR1cm4gYW5zIDsKfQoKdmwgdmlzKG1heG4sIDApLCB0b3AsIGFkalttYXhuXSA7Cgp2b2lkIGRmcyggbGwgdSkgewogIHZpc1t1XSA9IDEgOwogIGZvciAoYXV0byB4IDogYWRqW3VdKSB7CiAgICBpZiAoIXZpc1t4XSkgZGZzKHgpIDsKICB9CiAgdG9wLnBiKHUpIDsKfQp2b2lkIHRvcG9fc29ydCh2bCBhZGpbXSwgbGwgbikgewogIGZmcihpLCAxLCBuKSB7CiAgICBpZiAoIXZpc1tpXSkgZGZzKGkpIDsKICB9CiAgcmV2ZXJzZShhbGwodG9wKSkgOwogIGNvdXQgPDwgIlRPUE9MT0dJQ0FMIFNPUlRJTkcgT0YgR1JBUEggSVNcbiAiIDsKICBmb3IgKGF1dG8geCA6IHRvcCkgY291dCA8PCB4ICA8PCAiICI7Cn0KCnZsIHZbbWF4bl0gOwp2ZWN0b3IgPGRvdWJsZSA+IHByb2IobWF4biwgMCkgOwoKdm9pZCBkZnMgKGxsIG4sIGxsIHBhcikgewogIGxsIHJlcyA9IHN6KHZbbl0pIDsKICBpZiAocGFyICE9IC0xKSAtLXJlcyA7CiAgZm9yIChhdXRvIHggOiB2W25dKSB7CiAgICBpZiAoIHggIT0gcGFyICkgewogICAgICBwcm9iW3hdID0gcHJvYltuXSAvIHJlcyA7CiAgICAgIGRmcyh4LCBuKSA7CiAgICB9CiAgfQp9CgppbnQgbWFpbigpIHsKICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKDApICwgY2luLnRpZSgwKTsKICBsbCB0LCBxLCBuLCBhLCBiLCBjLCBkLCBrLCBsLCBtLCByLCAgeCA9IDAsIHkgPSAwLCB6ID0gMCAsIHN1bSA9IDAsIGFucyA9IDAsIHRlbXAgPSAwLCByZXMgPSAwIDsKICBjaW4gPj4gdCA7CiAgd2hpbGUgKHQtLSkgewogICAgY2luID4+IG4gOwogICAgaWYgKG4gPCA0KSBjb3V0IDw8ICItMVxuIiA7CiAgICB2bCB2IDsKICAgIGxsIGkgOwogICAgaWYgKG4gJiAxKSB7CiAgICAgIGkgPSAxIDsKICAgICAgd2hpbGUgKGkgPD0gbiApIHYucGIoaSksIGkgKz0gMiA7CiAgICAgIGkgPSBuIC0gMSA7CiAgICAgIHdoaWxlIChpID4gMSkgdi5wYihpKSwgaSAtPSAyIDsKICAgICAgeCA9IDEgKyAobiArIDEpIC8gMiA7CiAgICAgIHN3YXAodlt4XSwgdlt4IC0gMV0pIDsKICAgIH0KICAgIGVsc2UgewogICAgICBpID0gMiA7CiAgICAgIHdoaWxlIChpIDw9IG4pIHYucGIoaSksIGkgKz0gMiA7CiAgICAgIGkgPSBuIC0gMSA7CiAgICAgIHdoaWxlIChpID4gMCApIHYucGIoaSksIGkgLT0gMiA7CiAgICAgIHggPSAxICsgbiAvIDIgOwogICAgICBzd2FwKHZbeF0sIHZbeCAtIDFdKSA7CiAgICB9CiAgICBmb3IgKGF1dG8geCA6IHYpIGNvdXQgPDwgeCA8PCAiICI7CiAgICBjb3V0IDw8IGVuZGwgOwogIH0KfQoK