#include <iostream>
using namespace std;
void wyp_tab(int **tab, int w, int k)
{
int pom;
for (int i=0;i<w;i++)
{
for (int j=0;j<k;j++)
{
cin>>tab[i][j];
//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;
//cout<<"podaj liczbe tranposzycji t"<<endl;
cin >> t; //liczba transpozycji
//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*w+k-2))
{
for(int i=k-1; i>0; i--)
{tab[w-1][i]=tab[w-1][i-1];
j++;}
}
if(j>=(2*w+k-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);
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;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwp2b2lkIHd5cF90YWIoaW50ICoqdGFiLCBpbnQgdywgaW50IGspCnsKICAgICAgICBpbnQgcG9tOwogICAgICAgIGZvciAoaW50IGk9MDtpPHc7aSsrKQogICAgICAgIHsKICAgICAgICAgICAgICAgIGZvciAoaW50IGo9MDtqPGs7aisrKQogICAgICAgICAgICAgICAgewoKICAgICAgICAgICAgICAgICAgICAgICAgY2luPj50YWJbaV1bal07CiAgICAgICAgICAgICAgICAgICAgICAgIC8vcG9tKys7CiAgICAgICAgICAgICAgICAgICAgICAgIC8vaWYgKHBvbT09MTApCiAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgICBwb209MDsKICAgICAgICAgICAgICAgIH0KICAgICAgICB9Cn0Kdm9pZCB3eXNfdGFiKGludCAqKnRhYiwgaW50IHcsIGludCBrKQp7CiAgICAgICAgZm9yIChpbnQgaT0wO2k8dztpKyspCiAgICAgICAgewogICAgICAgICAgICAgICAgZm9yIChpbnQgaj0wO2o8aztqKyspCiAgICAgICAgICAgICAgICAgICAgICAgIGNvdXQ8PHRhYltpXVtqXTw8IiAiOwogICAgICAgICAgICAgICAgY291dDw8ZW5kbDsKICAgICAgICB9Cn0KCmludCBtYWluKCkKewoJaW50IHQsIHcsIGssICoqdGFiOwogICAgICAgIC8vY291dDw8InBvZGFqIGxpY3piZSB0cmFucG9zenljamkgdCI8PGVuZGw7CgljaW4gPj4gdDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2xpY3piYSB0cmFuc3BvenljamkKICAgICAgICAvL2NvdXQ8PCJwb2RhaiBsaWN6YmUgdyB3aWVyc3p5IGkgayBrb2x1bW4iPDxlbmRsOwogICAgICAgIC8vY2luID4+IHcgPj4gazsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9sLXdpZXJzemU7IGsta29sdW1ueQogICAgICAgIC8vaWYgKHc8MykKICAgICAgICAvLyAgICAgICAgdz0zOwogICAgICAgIC8vaWYgKGs+MTAwKQogICAgICAgIC8vICAgICAgICBrPTEwMDsKICAgICAgICAvL2ludCBsX3Bvej0yKmsrMioody0yKTsKICAgICAgICAvL2NvdXQ8PCJkbHVnb3NjIHdla3RvcmE6ICI8PGxfcG96PDxlbmRsOwoKICAgICAgICAvL3RhYiA9IG5ldyBpbnQgKlt3XTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vcHJ6eWR6aWVsZW5pZSBwYW1pxJljaSBuYSB3IHdpZXJzenkKCS8vZm9yKGludCBpPTA7aTx3O2krKykgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy93IHdpZXJ6eSBwbyBrIGVsZW1lbnTDs3cKCS8vCXRhYltpXSA9IG5ldyBpbnRba107CiAgICAgICAgLy93eXBfdGFiKHRhYix3LGspOwogICAgICAgIC8vd3lzX3RhYih0YWIsdyxrKTsKCglmb3IgKGludCB0ciA9IDA7IHRyIDwgdDsgdHIrKykKCXsKICAgICAgICAgICAgICAgIGNpbiA+PiB3ID4+IGs7CiAgICAgICAgICAgICAgICB0YWIgPSBuZXcgaW50ICpbd107ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL3ByenlkemllbGVuaWUgcGFtacSZY2kgbmEgdyB3aWVyc3p5CgkgICAgICAgIGZvcihpbnQgaT0wO2k8dztpKyspICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vdyB3aWVyenkgcG8gayBlbGVtZW50w7N3CgkJICAgICAgICB0YWJbaV0gPSBuZXcgaW50W2tdOwogICAgICAgICAgICAgICAgd3lwX3RhYih0YWIsdyxrKTsKICAgICAgICAgICAgICAgIHd5c190YWIodGFiLHcsayk7CiAgICAgICAgICAgICAgICBpbnQgbF9wb3o9MiprKzIqKHctMik7CiAgICAgICAgICAgICAgICBpbnQgaj0xOwogICAgICAgICAgICAgICAgd2hpbGUgKGo8PWxfcG96KQogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIGludCB0ZW1wPXRhYlswXVswXTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYoaj4wICYgajxrKQogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yKGludCBpPTA7IGk8ay0xOyBpKyspCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7dGFiWzBdW2ldPXRhYlswXVtpKzFdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaisrO30KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBpZihqPj1rICYgajwoayt3LTEpKQogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yKGludCBpPTA7IGk8dy0xOyBpKyspCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7dGFiW2ldW2stMV09dGFiW2krMV1bay0xXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGorKzt9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgaWYoaj49ayt3LTEgJiBqPCgyKncray0yKSkKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcihpbnQgaT1rLTE7IGk+MDsgaS0tKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3RhYlt3LTFdW2ldPXRhYlt3LTFdW2ktMV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqKys7fQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGlmKGo+PSgyKncray0yKSYgajxsX3BveikKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcihpbnQgaT13LTE7IGk+MTtpLS0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7dGFiW2ldWzBdPXRhYltpLTFdWzBdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaisrO30KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBpZihqPT1sX3BveikKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYlsxXVswXT10ZW1wOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXA9MDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqKys7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgY291dDw8ZW5kbDsKICAgICAgICAgICAgICAgIHd5c190YWIodGFiLHcsayk7CgogICAgICAgICAgICAgICAgZm9yKGludCBpPTA7aTx3O2krKykKICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIFtdIHRhYltpXTsKICAgICAgICAgICAgICAgIGRlbGV0ZSBbXSB0YWI7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgLy9jb3V0PDxlbmRsOwogICAgICAgIC8vd3lzX3RhYih0YWIsdyxrKTsKCiAgICAgICAgLy9mb3IoaW50IGk9MDtpPHc7aSsrKQogICAgICAgIC8vICAgICAgICBkZWxldGUgW10gdGFiW2ldOwogICAgICAgIC8vZGVsZXRlIFtdIHRhYjsKICAgICAgICAvL3N5c3RlbSgicGF1c2UiKTsKCXJldHVybiAwOwp9