#include<bits/stdc++.h>
using namespace std;
//#include <boost/multiprecision/cpp_int.hpp>
//using namespace boost::multiprecision;
#define fio ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
#pragma GCC optimize "trapv"
#pragma GCC optimize("Ofast")
#define _GLIBCXX_DEBUG
#define ll long long int
#define ld long double
#define ull unsigned long long int // ranges from (0 - twice of long long int)
#define rep(i,a,n) for (ll i=a;i<n;i++)
#define per(i,a,n) for (ll i=n-1;i>=a;i--)
#define pb push_back
#define mp make_pair
#define vll vector<ll>
#define mod 1000000007LL
#define llpair pair<ll,ll>
#define INF 1000000000000000000ll
#define np next_permutation
#define PI acos(-1)
#define deb(x) cout<<#x<<" "<<x<<endl;
#define rotate_left(vec,amt) rotate(vec.begin(),vec.begin()+amt,vec.end());
#define rotate_right(vec,amt) rotate(vec.begin(),vec.begin()+vec.size()-amt,vec.end());
#define all(x) x.begin(),x.end()
#define sortall(x) sort(all(x))
#define clr(x) memset(x,0,sizeof(x))
int a[305][305];
vector<ll>matrix;
vector<int>res;
void spiralPrint(int m, int n, int a[305][305])
{
int i, k = 0, l = 0;
/* k - starting row index
m - ending row index
l - starting column index
n - ending column index
i - iterator
*/
while (k < m && l < n) {
/* Print the first row from
the remaining rows */
for (i = l; i < n; ++i) {
//cout << a[k][i] << " ";
matrix.pb(a[k][i]);
}
k++;
/* Print the last column
from the remaining columns */
for (i = k; i < m; ++i) {
//cout << a[i][n - 1] << " ";
matrix.pb(a[i][n-1]);
}
n--;
/* Print the last row from
the remaining rows */
if (k < m) {
for (i = n - 1; i >= l; --i) {
//cout << a[m - 1][i] << " ";
matrix.pb(a[m-1][i]);
}
m--;
}
/* Print the first column from
the remaining columns */
if (l < n) {
for (i = m - 1; i >= k; --i) {
//cout << a[i][l] << " ";
matrix.pb(a[i][l]);
}
l++;
}
}
}
int z=0;
void sendback(int m, int n, int a[305][305])
{
int i, k = 0, l = 0;
/* k - starting row index
m - ending row index
l - starting column index
n - ending column index
i - iterator
*/
while (k < m && l < n) {
/* Print the first row from
the remaining rows */
for (i = l; i < n; ++i) {
a[k][i] = res[z++];
}
k++;
/* Print the last column
from the remaining columns */
for (i = k; i < m; ++i) {
a[i][n - 1] = res[z++];
}
n--;
/* Print the last row from
the remaining rows */
if (k < m) {
for (i = n - 1; i >= l; --i) {
a[m - 1][i] =res[z++];
}
m--;
}
/* Print the first column from
the remaining columns */
if (l < n) {
for (i = m - 1; i >= k; --i) {
a[i][l] = res[z++];
}
l++;
}
}
}
int main() {
//auto start = chrono::high_resolution_clock::now();
fio;
ll t=1;
//cin>>t;
while(t--)
{
clr(a);
ll m,n; cin>>m>>n;
rep(i,0,m) rep(j,0,n) cin>>a[i][j];
//ll l; cin>>l;
vector<int>vec; // it stores the no of elements for rotation
char temp;
int i=0;
do {
int x;
scanf("%d%c", &x, &temp);
vec.pb(x);
i++;
}while(temp != '\n');
matrix.clear();
spiralPrint(m,n,a);
int tm=m,tn=n;
ll b = 2*tm + 2*(tn-2);
int lvl=1;
vector<int>tt;
res.clear();
int k=0;
while(matrix.size())
{
tt.clear();
while(b--)
{
tt.pb(matrix[0]);
matrix.erase(matrix.begin()+0);
}
if(lvl%2)
{
if(b>=vec[k])
{
rotate_left(tt,b%vec[k]);
}
else
{
rotate_left(tt,vec[k]);
}
k++;
}
else if(lvl%2==0)
{
if(b>=vec[k])
{
rotate_right(tt,b%vec[k]);
}
else
{
rotate_right(tt,vec[k]);
}
k++;
}
for(int i=0;i<(int)tt.size();i++)
res.pb(tt[i]);
lvl++;
tm=tm-2; tn=tn-2;
b=2*tm + 2*(tn-2);
}
sendback(m,n,a);
for(int i=0;i<m;i++)
{
for(int j=0;j<n;j++)
cout<<a[i][j]<<" ";
cout<<"\n";
}
}
//auto finish = chrono::high_resolution_clock::now();
//cerr << "Time elapsed: " << (chrono::duration<long double>(finish-start)).count() << "s\n";
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLy8jaW5jbHVkZSA8Ym9vc3QvbXVsdGlwcmVjaXNpb24vY3BwX2ludC5ocHA+Ci8vdXNpbmcgbmFtZXNwYWNlIGJvb3N0OjptdWx0aXByZWNpc2lvbjsKI2RlZmluZSBmaW8gaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7IGNpbi50aWUoTlVMTCk7IGNvdXQudGllKE5VTEwpOwojcHJhZ21hIEdDQyBvcHRpbWl6ZSAidHJhcHYiCiNwcmFnbWEgR0NDIG9wdGltaXplKCJPZmFzdCIpCiNkZWZpbmUgX0dMSUJDWFhfREVCVUcKI2RlZmluZSBsbCBsb25nIGxvbmcgaW50CiNkZWZpbmUgbGQgbG9uZyBkb3VibGUKI2RlZmluZSB1bGwgdW5zaWduZWQgbG9uZyBsb25nIGludCAgLy8gcmFuZ2VzIGZyb20gKDAgLSB0d2ljZSBvZiBsb25nIGxvbmcgaW50KQojZGVmaW5lIHJlcChpLGEsbikgZm9yIChsbCBpPWE7aTxuO2krKykKI2RlZmluZSBwZXIoaSxhLG4pIGZvciAobGwgaT1uLTE7aT49YTtpLS0pCiNkZWZpbmUgcGIgcHVzaF9iYWNrCiNkZWZpbmUgbXAgbWFrZV9wYWlyCiNkZWZpbmUgdmxsIHZlY3RvcjxsbD4KI2RlZmluZSBtb2QgMTAwMDAwMDAwN0xMCiNkZWZpbmUgbGxwYWlyIHBhaXI8bGwsbGw+CiNkZWZpbmUgSU5GIDEwMDAwMDAwMDAwMDAwMDAwMDBsbAojZGVmaW5lIG5wIG5leHRfcGVybXV0YXRpb24KI2RlZmluZSBQSSBhY29zKC0xKQojZGVmaW5lIGRlYih4KSBjb3V0PDwjeDw8IiAiPDx4PDxlbmRsOwojZGVmaW5lIHJvdGF0ZV9sZWZ0KHZlYyxhbXQpIHJvdGF0ZSh2ZWMuYmVnaW4oKSx2ZWMuYmVnaW4oKSthbXQsdmVjLmVuZCgpKTsKI2RlZmluZSByb3RhdGVfcmlnaHQodmVjLGFtdCkgcm90YXRlKHZlYy5iZWdpbigpLHZlYy5iZWdpbigpK3ZlYy5zaXplKCktYW10LHZlYy5lbmQoKSk7CiNkZWZpbmUgYWxsKHgpIHguYmVnaW4oKSx4LmVuZCgpCiNkZWZpbmUgc29ydGFsbCh4KSBzb3J0KGFsbCh4KSkKI2RlZmluZSBjbHIoeCkgbWVtc2V0KHgsMCxzaXplb2YoeCkpCgppbnQgYVszMDVdWzMwNV07CnZlY3RvcjxsbD5tYXRyaXg7CnZlY3RvcjxpbnQ+cmVzOwp2b2lkIHNwaXJhbFByaW50KGludCBtLCBpbnQgbiwgaW50IGFbMzA1XVszMDVdKSAKeyAKICAgIGludCBpLCBrID0gMCwgbCA9IDA7IAogIAogICAgLyogayAtIHN0YXJ0aW5nIHJvdyBpbmRleCAgCiAgICAgICAgbSAtIGVuZGluZyByb3cgaW5kZXggIAogICAgICAgIGwgLSBzdGFydGluZyBjb2x1bW4gaW5kZXggIAogICAgICAgIG4gLSBlbmRpbmcgY29sdW1uIGluZGV4ICAKICAgICAgICBpIC0gaXRlcmF0b3IgIAogICAgKi8KICAKICAgIHdoaWxlIChrIDwgbSAmJiBsIDwgbikgeyAKICAgICAgICAvKiBQcmludCB0aGUgZmlyc3Qgcm93IGZyb20gCiAgICAgICAgICAgICAgIHRoZSByZW1haW5pbmcgcm93cyAqLwogICAgICAgIGZvciAoaSA9IGw7IGkgPCBuOyArK2kpIHsgCiAgICAgICAgICAgIC8vY291dCA8PCBhW2tdW2ldIDw8ICIgIjsKICAgICAgICAgICAgbWF0cml4LnBiKGFba11baV0pOyAKICAgICAgICB9IAogICAgICAgIGsrKzsgCiAgCiAgICAgICAgLyogUHJpbnQgdGhlIGxhc3QgY29sdW1uICAKICAgICAgICAgZnJvbSB0aGUgcmVtYWluaW5nIGNvbHVtbnMgKi8KICAgICAgICBmb3IgKGkgPSBrOyBpIDwgbTsgKytpKSB7IAogICAgICAgICAgICAvL2NvdXQgPDwgYVtpXVtuIC0gMV0gPDwgIiAiOwogICAgICAgICAgICBtYXRyaXgucGIoYVtpXVtuLTFdKTsgCiAgICAgICAgfSAKICAgICAgICBuLS07IAogIAogICAgICAgIC8qIFByaW50IHRoZSBsYXN0IHJvdyBmcm9tICAKICAgICAgICAgICAgICAgIHRoZSByZW1haW5pbmcgcm93cyAqLwogICAgICAgIGlmIChrIDwgbSkgeyAKICAgICAgICAgICAgZm9yIChpID0gbiAtIDE7IGkgPj0gbDsgLS1pKSB7IAogICAgICAgICAgICAgICAgLy9jb3V0IDw8IGFbbSAtIDFdW2ldIDw8ICIgIjsKICAgICAgICAgICAgICAgIG1hdHJpeC5wYihhW20tMV1baV0pOyAKICAgICAgICAgICAgfSAKICAgICAgICAgICAgbS0tOyAKICAgICAgICB9IAogIAogICAgICAgIC8qIFByaW50IHRoZSBmaXJzdCBjb2x1bW4gZnJvbSAKICAgICAgICAgICAgICAgICAgIHRoZSByZW1haW5pbmcgY29sdW1ucyAqLwogICAgICAgIGlmIChsIDwgbikgeyAKICAgICAgICAgICAgZm9yIChpID0gbSAtIDE7IGkgPj0gazsgLS1pKSB7IAogICAgICAgICAgICAgICAgLy9jb3V0IDw8IGFbaV1bbF0gPDwgIiAiOyAKICAgICAgICAgICAgICAgIG1hdHJpeC5wYihhW2ldW2xdKTsKICAgICAgICAgICAgfSAKICAgICAgICAgICAgbCsrOyAKICAgICAgICB9IAogICAgICAgIAogICAgICAgCiAgICB9IAp9IAoKCmludCB6PTA7CnZvaWQgc2VuZGJhY2soaW50IG0sIGludCBuLCBpbnQgYVszMDVdWzMwNV0pIAp7IAogICAgaW50IGksIGsgPSAwLCBsID0gMDsgCiAgCiAgICAvKiBrIC0gc3RhcnRpbmcgcm93IGluZGV4ICAKICAgICAgICBtIC0gZW5kaW5nIHJvdyBpbmRleCAgCiAgICAgICAgbCAtIHN0YXJ0aW5nIGNvbHVtbiBpbmRleCAgCiAgICAgICAgbiAtIGVuZGluZyBjb2x1bW4gaW5kZXggIAogICAgICAgIGkgLSBpdGVyYXRvciAgCiAgICAqLwogIAogICAgd2hpbGUgKGsgPCBtICYmIGwgPCBuKSB7IAogICAgICAgIC8qIFByaW50IHRoZSBmaXJzdCByb3cgZnJvbSAKICAgICAgICAgICAgICAgdGhlIHJlbWFpbmluZyByb3dzICovCiAgICAgICAgZm9yIChpID0gbDsgaSA8IG47ICsraSkgeyAKICAgICAgICAgICAgYVtrXVtpXSA9IHJlc1t6KytdOwogICAgICAgIH0gCiAgICAgICAgaysrOyAKICAKICAgICAgICAvKiBQcmludCB0aGUgbGFzdCBjb2x1bW4gIAogICAgICAgICBmcm9tIHRoZSByZW1haW5pbmcgY29sdW1ucyAqLwogICAgICAgIGZvciAoaSA9IGs7IGkgPCBtOyArK2kpIHsgCiAgICAgICAgICAgICBhW2ldW24gLSAxXSA9IHJlc1t6KytdOwogICAgICAgICAgICAKICAgICAgICB9IAogICAgICAgIG4tLTsgCiAgCiAgICAgICAgLyogUHJpbnQgdGhlIGxhc3Qgcm93IGZyb20gIAogICAgICAgICAgICAgICAgdGhlIHJlbWFpbmluZyByb3dzICovCiAgICAgICAgaWYgKGsgPCBtKSB7IAogICAgICAgICAgICBmb3IgKGkgPSBuIC0gMTsgaSA+PSBsOyAtLWkpIHsgCiAgICAgICAgICAgICAgICBhW20gLSAxXVtpXSA9cmVzW3orK107CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgfSAKICAgICAgICAgICAgbS0tOyAKICAgICAgICB9IAogIAogICAgICAgIC8qIFByaW50IHRoZSBmaXJzdCBjb2x1bW4gZnJvbSAKICAgICAgICAgICAgICAgICAgIHRoZSByZW1haW5pbmcgY29sdW1ucyAqLwogICAgICAgIGlmIChsIDwgbikgeyAKICAgICAgICAgICAgZm9yIChpID0gbSAtIDE7IGkgPj0gazsgLS1pKSB7IAogICAgICAgICAgICAgICAgYVtpXVtsXSA9IHJlc1t6KytdOwogICAgICAgICAgICAgICAgCiAgICAgICAgICAgIH0gCiAgICAgICAgICAgIGwrKzsgCiAgICAgICAgfSAKICAgICAgICAKICAgICAgIAogICAgfSAKfSAKCmludCBtYWluKCkgewogICAgLy9hdXRvIHN0YXJ0ID0gY2hyb25vOjpoaWdoX3Jlc29sdXRpb25fY2xvY2s6Om5vdygpOwogICAgZmlvOwogICAgbGwgdD0xOyAKICAgIC8vY2luPj50OwogICAgd2hpbGUodC0tKQogICAgewoJCWNscihhKTsKCQlsbCBtLG47IGNpbj4+bT4+bjsKCQlyZXAoaSwwLG0pIHJlcChqLDAsbikgY2luPj5hW2ldW2pdOwoJCQoJCS8vbGwgbDsgY2luPj5sOyAKCQl2ZWN0b3I8aW50PnZlYzsgIC8vIGl0IHN0b3JlcyB0aGUgbm8gb2YgZWxlbWVudHMgZm9yIHJvdGF0aW9uCgkJY2hhciB0ZW1wOwoJCWludCBpPTA7CgkJIGRvIHsgCgkJCSBpbnQgeDsKCQlzY2FuZigiJWQlYyIsICZ4LCAmdGVtcCk7CgkJdmVjLnBiKHgpOyAKCQlpKys7IAoJCX13aGlsZSh0ZW1wICE9ICdcbicpOwoJCQoJCW1hdHJpeC5jbGVhcigpOwoJCXNwaXJhbFByaW50KG0sbixhKTsKCQkKCQkKCQkKCQlpbnQgdG09bSx0bj1uOwoJCQoJCQoJCQoJCQoJCWxsIGIgPSAyKnRtICsgMioodG4tMik7CgkJaW50IGx2bD0xOwoJCXZlY3RvcjxpbnQ+dHQ7CgkJcmVzLmNsZWFyKCk7CgkJaW50IGs9MDsKCQl3aGlsZShtYXRyaXguc2l6ZSgpKQoJCXsKCQkJdHQuY2xlYXIoKTsKCQkJd2hpbGUoYi0tKQoJCQl7CgkJCQl0dC5wYihtYXRyaXhbMF0pOwoJCQkJbWF0cml4LmVyYXNlKG1hdHJpeC5iZWdpbigpKzApOwoJCQl9CgkJCQoJCQkKCQkJCgkJCWlmKGx2bCUyKQoJCQl7CgkJCQlpZihiPj12ZWNba10pCgkJCQl7CgkJCQkJcm90YXRlX2xlZnQodHQsYiV2ZWNba10pOwoJCQkJfQoJCQkJZWxzZQoJCQkJewoJCQkJCQoJCQkJcm90YXRlX2xlZnQodHQsdmVjW2tdKTsKCQkJCX0KCQkJCWsrKzsKCQkJfQoJCQllbHNlIGlmKGx2bCUyPT0wKQoJCQl7CgkJCQlpZihiPj12ZWNba10pCgkJCQl7CgkJCQkJcm90YXRlX3JpZ2h0KHR0LGIldmVjW2tdKTsKCQkJCX0KCQkJCWVsc2UKCQkJCXsKCQkJCQkKCQkJCXJvdGF0ZV9yaWdodCh0dCx2ZWNba10pOwoJCQkJfQoJCQkJaysrOwoJCQl9CgkJCQoJCQkKCQkJCgkJCQoJCQlmb3IoaW50IGk9MDtpPChpbnQpdHQuc2l6ZSgpO2krKykKCQkJcmVzLnBiKHR0W2ldKTsKCQkJbHZsKys7CgkJCQoJCQl0bT10bS0yOyB0bj10bi0yOwoJCQliPTIqdG0gKyAyKih0bi0yKTsKCQl9CgkJCgkJCgkKCQkKCQlzZW5kYmFjayhtLG4sYSk7CgkJCgkJCgkJZm9yKGludCBpPTA7aTxtO2krKykKCQl7CgkJCWZvcihpbnQgaj0wO2o8bjtqKyspCgkJCWNvdXQ8PGFbaV1bal08PCIgIjsKCQkJY291dDw8IlxuIjsKCQl9CgkJCgl9CiAgICAvL2F1dG8gZmluaXNoID0gY2hyb25vOjpoaWdoX3Jlc29sdXRpb25fY2xvY2s6Om5vdygpOwogICAgLy9jZXJyIDw8ICJUaW1lIGVsYXBzZWQ6ICIgPDwgKGNocm9ubzo6ZHVyYXRpb248bG9uZyBkb3VibGU+KGZpbmlzaC1zdGFydCkpLmNvdW50KCkgPDwgInNcbiI7CiAgICByZXR1cm4gMDsKICAgICAgICAgICAgCn0KCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK