#include <bits/stdc++.h>
using namespace std;
#define int long long
#define siz(x) (int)(x.size())
int n, m, k;
int32_t main(){
ios_base::sync_with_stdio(0);
cin.tie(0);
int test = 1;
cin >> test;
while(test--){
cin >> n >> m >> k;
vector<vector<int>> a;
// Sử dụng 1-index; hàng từ 0 đến n (n+1 hàng) và cột từ 0 đến m (m+1 cột)
a.assign(n+1, vector<int>());
int num = n*m / k;
for(int i = 0; i <= n; i++){
a[i].assign(m+1, 0);
}
int dem = 0;
for(int i = 1; i <= n; i++){
for(int j = 1; j <= m; j++){
if(a[i][j] == 0){
int cur_i = i, cur_j = j;
set<int> s;
while(cur_i <= n && cur_j <= m){
int curVal = dem / num + 1;
s.insert(curVal);
// Nếu trong chuỗi đã có >1 giá trị thì dừng chuỗi
if(siz(s) >= 2) break;
// Kiểm tra các ô kề bên nhưng đảm bảo truy cập trong giới hạn
if(cur_j - 1 >= 1 && a[cur_i][cur_j - 1] == curVal) break;
if(cur_i - 1 >= 1 && a[cur_i - 1][cur_j] == curVal) break;
if(cur_i + 1 <= n && a[cur_i + 1][cur_j] == curVal) break;
if(cur_j + 1 <= m && a[cur_i][cur_j + 1] == curVal) break;
a[cur_i][cur_j] = curVal;
dem++;
// Di chuyển theo đường chéo xuống dưới
if(cur_i + 1 <= n && cur_j + 1 <= m)
cur_i++, cur_j++;
else
cur_j += 2;
}
}
}
}
for(int i = 1; i <= n; i++){
for(int j = 1; j <= m; j++){
cout << a[i][j] << " ";
}
cout << "\n";
}
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgaW50IGxvbmcgbG9uZwojZGVmaW5lIHNpeih4KSAoaW50KSh4LnNpemUoKSkKCmludCBuLCBtLCBrOwoKaW50MzJfdCBtYWluKCl7CiAgICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKDApOyAKICAgIGNpbi50aWUoMCk7CiAgICAKICAgIGludCB0ZXN0ID0gMTsKICAgIGNpbiA+PiB0ZXN0OwogICAgd2hpbGUodGVzdC0tKXsKICAgICAgICBjaW4gPj4gbiA+PiBtID4+IGs7CiAgICAgICAgdmVjdG9yPHZlY3RvcjxpbnQ+PiBhOwogICAgICAgIC8vIFPhu60gZOG7pW5nIDEtaW5kZXg7IGjDoG5nIHThu6sgMCDEkeG6v24gbiAobisxIGjDoG5nKSB2w6AgY+G7mXQgdOG7qyAwIMSR4bq/biBtIChtKzEgY+G7mXQpCiAgICAgICAgYS5hc3NpZ24obisxLCB2ZWN0b3I8aW50PigpKTsKICAgICAgICBpbnQgbnVtID0gbiptIC8gazsKICAgICAgICBmb3IoaW50IGkgPSAwOyBpIDw9IG47IGkrKyl7CiAgICAgICAgICAgIGFbaV0uYXNzaWduKG0rMSwgMCk7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIGludCBkZW0gPSAwOwogICAgICAgIGZvcihpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKXsKICAgICAgICAgICAgZm9yKGludCBqID0gMTsgaiA8PSBtOyBqKyspewogICAgICAgICAgICAgICAgaWYoYVtpXVtqXSA9PSAwKXsKICAgICAgICAgICAgICAgICAgICBpbnQgY3VyX2kgPSBpLCBjdXJfaiA9IGo7CiAgICAgICAgICAgICAgICAgICAgc2V0PGludD4gczsKICAgICAgICAgICAgICAgICAgICB3aGlsZShjdXJfaSA8PSBuICYmIGN1cl9qIDw9IG0pewogICAgICAgICAgICAgICAgICAgICAgICBpbnQgY3VyVmFsID0gZGVtIC8gbnVtICsgMTsKICAgICAgICAgICAgICAgICAgICAgICAgcy5pbnNlcnQoY3VyVmFsKTsKICAgICAgICAgICAgICAgICAgICAgICAgLy8gTuG6v3UgdHJvbmcgY2h14buXaSDEkcOjIGPDsyA+MSBnacOhIHRy4buLIHRow6wgZOG7q25nIGNodeG7l2kKICAgICAgICAgICAgICAgICAgICAgICAgaWYoc2l6KHMpID49IDIpIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAvLyBLaeG7g20gdHJhIGPDoWMgw7Qga+G7gSBiw6puIG5oxrBuZyDEkeG6o20gYuG6o28gdHJ1eSBj4bqtcCB0cm9uZyBnaeG7m2kgaOG6oW4KICAgICAgICAgICAgICAgICAgICAgICAgaWYoY3VyX2ogLSAxID49IDEgJiYgYVtjdXJfaV1bY3VyX2ogLSAxXSA9PSBjdXJWYWwpIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICBpZihjdXJfaSAtIDEgPj0gMSAmJiBhW2N1cl9pIC0gMV1bY3VyX2pdID09IGN1clZhbCkgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmKGN1cl9pICsgMSA8PSBuICYmIGFbY3VyX2kgKyAxXVtjdXJfal0gPT0gY3VyVmFsKSBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgaWYoY3VyX2ogKyAxIDw9IG0gJiYgYVtjdXJfaV1bY3VyX2ogKyAxXSA9PSBjdXJWYWwpIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgYVtjdXJfaV1bY3VyX2pdID0gY3VyVmFsOwogICAgICAgICAgICAgICAgICAgICAgICBkZW0rKzsKICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIC8vIERpIGNodXnhu4NuIHRoZW8gxJHGsOG7nW5nIGNow6lvIHh14buRbmcgZMaw4bubaQogICAgICAgICAgICAgICAgICAgICAgICBpZihjdXJfaSArIDEgPD0gbiAmJiBjdXJfaiArIDEgPD0gbSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cl9pKyssIGN1cl9qKys7CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cl9qICs9IDI7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIAogICAgICAgIGZvcihpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKXsKICAgICAgICAgICAgZm9yKGludCBqID0gMTsgaiA8PSBtOyBqKyspewogICAgICAgICAgICAgICAgY291dCA8PCBhW2ldW2pdIDw8ICIgIjsKICAgICAgICAgICAgfQogICAgICAgICAgICBjb3V0IDw8ICJcbiI7CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIDA7Cn0K