#include <iostream>
#include <vector>
using namespace std;
void solve(){
int n;
cin>>n;
int k;
cin>>k;
if (k<n || k == n*2) {
cout<<-1<<"\n";
return;
}
else {
vector<vector<int>> grid(n, vector<int>(n, 0));
int m=0;
int num = 1;
//fill diagonal cells
while (n*2-k-m!=0){
grid[num-1][num-1] = num;
m++;
num++;
}
//fill the rest
for(int r = 0; r<n; r++){
for (int c = 0; c<n; c++){
if (grid[r][c] == 0){
grid[r][c] = num;
num++;
}
}
}
for (int r = 0; r<n; r++){
for (int c = 0; c<n;c++){
cout<<grid[r][c]<<" ";
}
cout<<"\n";
}
}
}
int main(){
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
int t;
cin>>t;
while (t--){
solve();
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwp2b2lkIHNvbHZlKCl7CiAgICAgICAgaW50IG47CiAgICAgICAgY2luPj5uOwogICAgICAgIGludCBrOwogICAgICAgIGNpbj4+azsKICAgICAgICBpZiAoazxuIHx8IGsgPT0gbioyKSB7CiAgICAgICAgICAgICAgICBjb3V0PDwtMTw8IlxuIjsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICB2ZWN0b3I8dmVjdG9yPGludD4+IGdyaWQobiwgdmVjdG9yPGludD4obiwgMCkpOwogICAgICAgICAgICAgICAgaW50IG09MDsKICAgICAgICAgICAgICAgIGludCBudW0gPSAxOwogICAgICAgICAgICAgICAgLy9maWxsIGRpYWdvbmFsIGNlbGxzCiAgICAgICAgICAgICAgICB3aGlsZSAobioyLWstbSE9MCl7CiAgICAgICAgICAgICAgICAgICAgICAgIGdyaWRbbnVtLTFdW251bS0xXSA9IG51bTsKICAgICAgICAgICAgICAgICAgICAgICAgbSsrOwogICAgICAgICAgICAgICAgICAgICAgICBudW0rKzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIC8vZmlsbCB0aGUgcmVzdAogICAgICAgICAgICAgICAgZm9yKGludCByID0gMDsgcjxuOyByKyspewogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBjID0gMDsgYzxuOyBjKyspewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChncmlkW3JdW2NdID09IDApewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZFtyXVtjXSA9IG51bTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bSsrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZm9yIChpbnQgciA9IDA7IHI8bjsgcisrKXsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgYyA9IDA7IGM8bjtjKyspewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdXQ8PGdyaWRbcl1bY108PCIgIjsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBjb3V0PDwiXG4iOwogICAgICAgICAgICAgICAgfQogICAgICAgIH0KfQppbnQgbWFpbigpewogICAgICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOwogICAgICAgIGNpbi50aWUobnVsbHB0cik7CiAgICAgICAgaW50IHQ7CiAgICAgICAgY2luPj50OwogICAgICAgIHdoaWxlICh0LS0pewogICAgICAgICAgICAgICAgc29sdmUoKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIDA7Cn0=