#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);
it{
ll n;
cin>>n;
bool b=1;
bool arr[n];
in(0,n-1) arr[i]=1;
ll a[n];
in(0,n-1) a[i]=-1;
inr(n-1,0){
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;
}
}
}
in(n-1,0) cout<<a[i]<<" ";
in(0,n-1){
if(a[i]==-1){
b=0;
break;
}
}
if(!b) cout<<-1<<" ";
else in(0,n-1) cout<<a[i]<<" ";
cout<<endl;
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNkZWZpbmUgbGwgbG9uZyBsb25nCiNkZWZpbmUgaW4oYSwgYikgZm9yIChsbCBpID0gKGEpOyBpIDw9IChiKTsgaSsrKSAgICAgICAgICAgICAgICAvLyBpbiB1c2luZyBpCiNkZWZpbmUgaW5qKGEsIGIpIGZvciAobGwgaiA9IChhKTsgaiA8PSAoYik7IGorKykgICAgICAgICAgICAgICAvLyBpbiB1c2luZyBqCiNkZWZpbmUgaW5rKGEsIGIpIGZvciAobGwgayA9IChhKTsgayA8PSAoYik7IGsrKykgICAgICAgICAgICAgICAvLyBpbiB1c2luZyBrCiNkZWZpbmUgaW5yKGEsIGIpIGZvcihsbCBpID0gKGEpOyBpID49IChiKTsgaS0tKSAgICAgICAgICAgICAgICAvLyBpbiByZXZlcnNlCiNkZWZpbmUgaXQgbGwgdGNzOyBjaW4+PnRjczsgd2hpbGUodGNzLS0pICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW5jbHVkZSB0ZXN0IGNhc2VzCiNkZWZpbmUgaW5hKGFycixuKSBsbCBhcnJbKG4rMSldOyBpbigxLG4pIGNpbj4+YXJyW2ldICAgICAgICAgICAgLy8gaW5wdXQgYXJyIG9mIG4gZWxlbWVudHMKI2RlZmluZSBwYiBwdXNoX2JhY2sKI2RlZmluZSB2bGwgdmVjdG9yPGxsPiB2CmxsIG1vZD0gIDFlOSs3Owp1c2luZyBuYW1lc3BhY2Ugc3RkOwovLyB2b2lkIFByaW1lU2lldmUobGwgbil7Ci8vICAgICBsbCBjb3VudD0wOwovLyAgICAgbGwgYVtuKzFdOwovLyAgICAgaW4oMSxuKSBhW2ldPWk7Ci8vICAgICBpbigyLG4pewovLyAgICAgICAgIGlmKGFbaV0hPTApewovLyAgICAgICAgICAgICBjb3VudCsrOwovLyAgICAgICAgICAgICAvLyBjb3V0PDxpPDxlbmRsOwovLyAgICAgICAgICAgICBmb3IobGwgaj1pO2o8PW47ais9aSl7Ci8vICAgICAgICAgICAgICAgICBhW2pdPTA7Ci8vICAgICAgICAgICAgIH0KLy8gICAgICAgICB9Ci8vICAgICB9Ci8vICAgICBjb3V0PDxjb3VudDsKLy8gfQppbnQgbWFpbigpewogICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7CiAgICBjaW4udGllKE5VTEwpOwogICAgY291dC50aWUoTlVMTCk7CiAgICBjb3V0PDxzZXRwcmVjaXNpb24oMzApOwoKCiAgCiAgCiAgICAKICAgaXR7CiAgICBsbCBuOwogICAgY2luPj5uOwogICAgYm9vbCBiPTE7CiAgICBib29sIGFycltuXTsKICAgIGluKDAsbi0xKSBhcnJbaV09MTsKICAgIGxsIGFbbl07CiAgICBpbigwLG4tMSkgYVtpXT0tMTsKICAgIGlucihuLTEsMCl7CiAgICAgICAgZm9yKGxsIGo9bi0xO2o+PTA7ai0tKXsKICAgICAgICAgICAgaWYoKHNxcnQoaStqKSpzcXJ0KGkraik9PWkraikmJihhcnJbal09PTEpKXsKICAgICAgICAgICAgICAgIGFbaV09ajsKICAgICAgICAgICAgICAgIGFycltqXT0wOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICBpbihuLTEsMCkgY291dDw8YVtpXTw8IiAiOwogICAgaW4oMCxuLTEpewogICAgICAgIGlmKGFbaV09PS0xKXsKICAgICAgICAgICAgYj0wOwogICAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICB9CiAgICBpZighYikgY291dDw8LTE8PCIgIjsKICAgIGVsc2UgaW4oMCxuLTEpIGNvdXQ8PGFbaV08PCIgIjsKICAgIGNvdXQ8PGVuZGw7CiAgIH0KCgoKCiAgICAKICAgIHJldHVybiAwOwp9Cg==