#include <bits/stdc++.h>
#define ll long long
// #define in(a, b) for (ll i = (a); i <= (b); i++) // in using i
// #define inj(a, b) for (ll j = (a); j <= (b); j++) // in using j
// #define ink(a, b) for (ll k = (a); k <= (b); k++) // in using k
// #define inr(a, b) for(ll i = (a); i >= (b); i--) // in reverse
// #define it ll tcs; cin>>tcs; while(tcs--) // include test cases
// #define ina(arr,n) ll arr[(n+1)]; in(1,n) cin>>arr[i] // input arr of n elements
// #define pb push_back
// #define vll vector<ll> v
// ll mod= 1e9+7;
using namespace std;
// void PrimeSieve(ll n){
// ll count=0;
// ll a[n+1];
// in(1,n) a[i]=i;
// in(2,n){
// if(a[i]!=0){
// count++;
// // cout<<i<<endl;
// for(ll j=i;j<=n;j+=i){
// a[j]=0;
// }
// }
// }
// cout<<count;
// }
int main(){
ios_base::sync_with_stdio(false);
cin.tie(NULL);
// cout.tie(NULL);
cout<<setprecision(30);
ll tt;
cin>>tt;
while((tt--)){
ll n;
cin>>n;
bool b=1;
bool arr[n];
for(int i=0;i<n;i++) arr[i]=1;
ll a[n];
for(int i=0;i<n;i++) a[i] = -1;
for(int i=n-1;i>=0;i--){
for(ll j=n-1;j>=0;j--){
if((sqrt(i+j)*sqrt(i+j)==i+j)&&(arr[j]==1)){
a[i]=j;
arr[j]=0;
break;
}
}
}
for(int i=0;i<n;i++){
if(a[i]==-1){
b=0;
break;
}
}
if(!b) cout<<-1<<" ";
else for(int i=0;i<n;i++) cout<<a[i]<<" ";
cout<<endl;
}
return 0;
}
ICNpbmNsdWRlIDxiaXRzL3N0ZGMrKy5oPgogI2RlZmluZSBsbCBsb25nIGxvbmcKLy8gI2RlZmluZSBpbihhLCBiKSBmb3IgKGxsIGkgPSAoYSk7IGkgPD0gKGIpOyBpKyspICAgICAgICAgICAgICAgIC8vIGluIHVzaW5nIGkKLy8gI2RlZmluZSBpbmooYSwgYikgZm9yIChsbCBqID0gKGEpOyBqIDw9IChiKTsgaisrKSAgICAgICAgICAgICAgIC8vIGluIHVzaW5nIGoKLy8gI2RlZmluZSBpbmsoYSwgYikgZm9yIChsbCBrID0gKGEpOyBrIDw9IChiKTsgaysrKSAgICAgICAgICAgICAgIC8vIGluIHVzaW5nIGsKLy8gI2RlZmluZSBpbnIoYSwgYikgZm9yKGxsIGkgPSAoYSk7IGkgPj0gKGIpOyBpLS0pICAgICAgICAgICAgICAgIC8vIGluIHJldmVyc2UKLy8gI2RlZmluZSBpdCBsbCB0Y3M7IGNpbj4+dGNzOyB3aGlsZSh0Y3MtLSkgICAgICAgICAgICAgICAgICAgICAgICAvLyBpbmNsdWRlIHRlc3QgY2FzZXMKLy8gI2RlZmluZSBpbmEoYXJyLG4pIGxsIGFyclsobisxKV07IGluKDEsbikgY2luPj5hcnJbaV0gICAgICAgICAgICAvLyBpbnB1dCBhcnIgb2YgbiBlbGVtZW50cwovLyAjZGVmaW5lIHBiIHB1c2hfYmFjawovLyAjZGVmaW5lIHZsbCB2ZWN0b3I8bGw+IHYKLy8gbGwgbW9kPSAgMWU5Kzc7CiB1c2luZyBuYW1lc3BhY2Ugc3RkOwovLyB2b2lkIFByaW1lU2lldmUobGwgbil7Ci8vICAgICBsbCBjb3VudD0wOwovLyAgICAgbGwgYVtuKzFdOwovLyAgICAgaW4oMSxuKSBhW2ldPWk7Ci8vICAgICBpbigyLG4pewovLyAgICAgICAgIGlmKGFbaV0hPTApewovLyAgICAgICAgICAgICBjb3VudCsrOwovLyAgICAgICAgICAgICAvLyBjb3V0PDxpPDxlbmRsOwovLyAgICAgICAgICAgICBmb3IobGwgaj1pO2o8PW47ais9aSl7Ci8vICAgICAgICAgICAgICAgICBhW2pdPTA7Ci8vICAgICAgICAgICAgIH0KLy8gICAgICAgICB9Ci8vICAgICB9Ci8vICAgICBjb3V0PDxjb3VudDsKLy8gfQppbnQgbWFpbigpewogICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7CiAgICBjaW4udGllKE5VTEwpOwogICAgLy8gY291dC50aWUoTlVMTCk7CiAgICBjb3V0PDxzZXRwcmVjaXNpb24oMzApOwoKCiAgCiAgCiAgICAKICAgbGwgdHQ7CiAgIGNpbj4+dHQ7CiAgIHdoaWxlKCh0dC0tKSl7CiAgICBsbCBuOwogICAgY2luPj5uOwogICAgYm9vbCBiPTE7CiAgICBib29sIGFycltuXTsKICAgIGZvcihpbnQgaT0wO2k8bjtpKyspIGFycltpXT0xOwogICAgbGwgYVtuXTsKICAgIGZvcihpbnQgaT0wO2k8bjtpKyspIGFbaV0gPSAtMTsKICAgIGZvcihpbnQgaT1uLTE7aT49MDtpLS0pewogICAgICAgIGZvcihsbCBqPW4tMTtqPj0wO2otLSl7CiAgICAgICAgICAgIGlmKChzcXJ0KGkraikqc3FydChpK2opPT1pK2opJiYoYXJyW2pdPT0xKSl7CiAgICAgICAgICAgICAgICBhW2ldPWo7CiAgICAgICAgICAgICAgICBhcnJbal09MDsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgZm9yKGludCBpPTA7aTxuO2krKyl7CiAgICAgICAgaWYoYVtpXT09LTEpewogICAgICAgICAgICBiPTA7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgIH0KICAgIGlmKCFiKSBjb3V0PDwtMTw8IiAiOwogICAgZWxzZSBmb3IoaW50IGk9MDtpPG47aSsrKSBjb3V0PDxhW2ldPDwiICI7CiAgICBjb3V0PDxlbmRsOwogICAgfSAgIAogICAKCgoKCiAgICAKICAgIHJldHVybiAwOwp9Cg==