#include<bits/stdc++.h>
using namespace std;
int p[2010][2010];
void dabiao()
{
p[1][1] = 1;
for (int t = 1; t <= 1000; t *= 2)
{
for (int i = 1; i <= t; i++)
for (int j = 1; j <= t; j++)
p[t + i][t + j] = p[i][j];
for (int i = 1; i <= t; i++)
for (int j = 1; j <= t; j++)
p[i][t + j] = p[i][j] + t;
for (int i = 1; i <= t; i++)
for (int j = 1; j <= t; j++)
p[i + t][j] = p[i][j] + t;
}
}
int main()
{
dabiao();
int T;
cin >> T;
while (T--)
{
int n, k;
cin >> n >> k;
bool flag = 1;
for (int i = 2; i <= k + 1; i++)
{
for (int j = 1; j <= n; j++)
if (p[i][j] > n) // 标准形在不满足的n中对应位置值将超过n
flag = 0;
}
if (!flag)
{
cout << "Impossible" << endl;
continue;
}
for (int i = 2; i <= k + 1; i++)
{
for (int j = 1; j < n; j++)
cout << p[i][j] << ' ';
cout << p[i][n] << endl;
}
}
return 0;
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
2 1 4 3 6 5 8 7 10 9 12 11 14 13 16 15
3 4 1 2 7 8 5 6 11 12 9 10 15 16 13 14
4 3 2 1 8 7 6 5 12 11 10 9 16 15 14 13
5 6 7 8 1 2 3 4 13 14 15 16 9 10 11 12
6 5 8 7 2 1 4 3 14 13 16 15 10 9 12 11
7 8 5 6 3 4 1 2 15 16 13 14 11 12 9 10
8 7 6 5 4 3 2 1 16 15 14 13 12 11 10 9
9 10 11 12 13 14 15 16 1 2 3 4 5 6 7 8
10 9 12 11 14 13 16 15 2 1 4 3 6 5 8 7
11 12 9 10 15 16 13 14 3 4 1 2 7 8 5 6
12 11 10 9 16 15 14 13 4 3 2 1 8 7 6 5
13 14 15 16 9 10 11 12 5 6 7 8 1 2 3 4
14 13 16 15 10 9 12 11 6 5 8 7 2 1 4 3
15 16 13 14 11 12 9 10 7 8 5 6 3 4 1 2
16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1