#include <iostream>
using namespace std;
void wyp_tab(int **tab, int w, int k)
{
int pom=1;
for (int i=0;i<w;i++)
{
for (int j=0;j<k;j++)
{
tab[i][j]=pom;
pom++;
if (pom==10)
pom=0;
}
}
}
void wys_tab(int **tab, int w, int k)
{
for (int i=0;i<w;i++)
{
for (int j=0;j<k;j++)
cout<<tab[i][j]<<" ";
cout<<endl;
}
}
int main()
{
int t, w, k, **tab;
cin >> t;
//cout<<"podaj liczbe tranposzycji t"<<endl;
//cout<<"podaj liczbe w wierszy i k kolumn"<<endl;
//cin >> w >> k; //l-wiersze; k-kolumny
//if (w<3)
// w=3;
//if (k>100)
// k=100;
//int l_poz=2*k+2*(w-2);
//cout<<"dlugosc wektora: "<<l_poz<<endl;
//tab = new int *[w]; //przydzielenie pamięci na w wierszy
//for(int i=0;i<w;i++) //w wierzy po k elementów
// tab[i] = new int[k];
//wyp_tab(tab,w,k);
//wys_tab(tab,w,k);
for (int tr = 0; tr < t; tr++)
{
cin >> w >> k;
tab = new int *[w]; //przydzielenie pamięci na w wierszy
for(int i=0;i<w;i++) //w wierzy po k elementów
tab[i] = new int[k];
wyp_tab(tab,w,k);
wys_tab(tab,w,k);
int l_poz=2*k+2*(w-2);
int j=1;
while (j<=l_poz)
{
int temp=tab[0][0];
if(j>0 & j<k)
{
for(int i=0; i<k-1; i++)
{tab[0][i]=tab[0][i+1];
j++;}
}
if(j>=k & j<(k+w-1))
{
for(int i=0; i<w-1; i++)
{tab[i][k-1]=tab[i+1][k-1];
j++;}
}
if(j>=k+w-1 & j<(2*k+w-2))
{
for(int i=k-1; i>0; i--)
{tab[w-1][i]=tab[w-1][i-1];
j++;}
}
if(j>=(2*k+w-2)& j<l_poz)
{
for(int i=w-1; i>1;i--)
{tab[i][0]=tab[i-1][0];
j++;}
}
if(j==l_poz)
{
tab[1][0]=temp;
temp=0;
j++;
}
}
cout<<endl;
wys_tab(tab,w,k);
cout<<endl;
for(int i=0;i<w;i++)
delete [] tab[i];
delete [] tab;
}
//cout<<endl;
//wys_tab(tab,w,k);
//for(int i=0;i<w;i++)
// delete [] tab[i];
//delete [] tab;
// system("pause");
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwp2b2lkIHd5cF90YWIoaW50ICoqdGFiLCBpbnQgdywgaW50IGspCnsKICAgICAgICBpbnQgcG9tPTE7CiAgICAgICAgZm9yIChpbnQgaT0wO2k8dztpKyspCiAgICAgICAgewogICAgICAgICAgICAgICAgZm9yIChpbnQgaj0wO2o8aztqKyspCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRhYltpXVtqXT1wb207CiAgICAgICAgICAgICAgICAgICAgICAgIHBvbSsrOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAocG9tPT0xMCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvbT0wOwogICAgICAgICAgICAgICAgfQogICAgICAgIH0KfQp2b2lkIHd5c190YWIoaW50ICoqdGFiLCBpbnQgdywgaW50IGspCnsKICAgICAgICBmb3IgKGludCBpPTA7aTx3O2krKykKICAgICAgICB7CiAgICAgICAgICAgICAgICBmb3IgKGludCBqPTA7ajxrO2orKykKICAgICAgICAgICAgICAgICAgICAgICAgY291dDw8dGFiW2ldW2pdPDwiICI7CiAgICAgICAgICAgICAgICBjb3V0PDxlbmRsOwogICAgICAgIH0KfQoKaW50IG1haW4oKQp7CglpbnQgdCwgdywgaywgKip0YWI7CiAgICAgICAgY2luID4+IHQ7CiAgICAgICAgLy9jb3V0PDwicG9kYWogbGljemJlIHRyYW5wb3N6eWNqaSB0Ijw8ZW5kbDsKCiAgICAgICAgLy9jb3V0PDwicG9kYWogbGljemJlIHcgd2llcnN6eSBpIGsga29sdW1uIjw8ZW5kbDsKICAgICAgICAvL2NpbiA+PiB3ID4+IGs7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vbC13aWVyc3plOyBrLWtvbHVtbnkKICAgICAgICAvL2lmICh3PDMpCiAgICAgICAgLy8gICAgICAgIHc9MzsKICAgICAgICAvL2lmIChrPjEwMCkKICAgICAgICAvLyAgICAgICAgaz0xMDA7CiAgICAgICAgLy9pbnQgbF9wb3o9MiprKzIqKHctMik7CiAgICAgICAgLy9jb3V0PDwiZGx1Z29zYyB3ZWt0b3JhOiAiPDxsX3Bvejw8ZW5kbDsKCiAgICAgICAgLy90YWIgPSBuZXcgaW50ICpbd107ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL3ByenlkemllbGVuaWUgcGFtacSZY2kgbmEgdyB3aWVyc3p5CgkvL2ZvcihpbnQgaT0wO2k8dztpKyspICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vdyB3aWVyenkgcG8gayBlbGVtZW50w7N3CgkvLwl0YWJbaV0gPSBuZXcgaW50W2tdOwogICAgICAgIC8vd3lwX3RhYih0YWIsdyxrKTsKICAgICAgICAvL3d5c190YWIodGFiLHcsayk7CgoJZm9yIChpbnQgdHIgPSAwOyB0ciA8IHQ7IHRyKyspCgl7CiAgICAgICAgICAgICAgICBjaW4gPj4gdyA+PiBrOwogICAgICAgICAgICAgICAgdGFiID0gbmV3IGludCAqW3ddOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vcHJ6eWR6aWVsZW5pZSBwYW1pxJljaSBuYSB3IHdpZXJzenkKCSAgICAgICAgZm9yKGludCBpPTA7aTx3O2krKykgICAgICAgICAgICAgICAgICAgICAgICAgIC8vdyB3aWVyenkgcG8gayBlbGVtZW50w7N3CgkJICAgICAgICB0YWJbaV0gPSBuZXcgaW50W2tdOwogICAgICAgICAgICAgICAgd3lwX3RhYih0YWIsdyxrKTsKICAgICAgICAgICAgICAgIHd5c190YWIodGFiLHcsayk7CiAgICAgICAgICAgICAgICBpbnQgbF9wb3o9MiprKzIqKHctMik7CiAgICAgICAgICAgICAgICBpbnQgaj0xOwogICAgICAgICAgICAgICAgd2hpbGUgKGo8PWxfcG96KQogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIGludCB0ZW1wPXRhYlswXVswXTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYoaj4wICYgajxrKQogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yKGludCBpPTA7IGk8ay0xOyBpKyspCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7dGFiWzBdW2ldPXRhYlswXVtpKzFdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaisrO30KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBpZihqPj1rICYgajwoayt3LTEpKQogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yKGludCBpPTA7IGk8dy0xOyBpKyspCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7dGFiW2ldW2stMV09dGFiW2krMV1bay0xXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGorKzt9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgaWYoaj49ayt3LTEgJiBqPCgyKmsrdy0yKSkKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcihpbnQgaT1rLTE7IGk+MDsgaS0tKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3RhYlt3LTFdW2ldPXRhYlt3LTFdW2ktMV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqKys7fQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGlmKGo+PSgyKmsrdy0yKSYgajxsX3BveikKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcihpbnQgaT13LTE7IGk+MTtpLS0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7dGFiW2ldWzBdPXRhYltpLTFdWzBdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaisrO30KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBpZihqPT1sX3BveikKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYlsxXVswXT10ZW1wOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXA9MDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqKys7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgY291dDw8ZW5kbDsKICAgICAgICAgICAgICAgIHd5c190YWIodGFiLHcsayk7CiAgICAgICAgICAgICAgICBjb3V0PDxlbmRsOwogICAgICAgICAgICAgICAgZm9yKGludCBpPTA7aTx3O2krKykKICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIFtdIHRhYltpXTsKICAgICAgICAgICAgICAgIGRlbGV0ZSBbXSB0YWI7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgLy9jb3V0PDxlbmRsOwogICAgICAgIC8vd3lzX3RhYih0YWIsdyxrKTsKCiAgICAgICAgLy9mb3IoaW50IGk9MDtpPHc7aSsrKQogICAgICAgIC8vICAgICAgICBkZWxldGUgW10gdGFiW2ldOwogICAgICAgIC8vZGVsZXRlIFtdIHRhYjsKICAgICAgICAvLyBzeXN0ZW0oInBhdXNlIik7CglyZXR1cm4gMDsKfQ==