#include <iostream>
#include <algorithm>
using namespace std;
int main() {
int gmax=-1;
int r,c,m,a;
while(cin>>r>>c>>m){
gmax=max(r,c);
int data[gmax][gmax];
int trans[gmax][gmax];
int s[m];
for(int i=0; i<r; i++){
for(int j=0; j<c; j++){
cin>>data[i][j];
}
}
for(int i=0; i<m; i++){
cin>>a;
s[i]=a;
}
for(int z=0; z<m; z++){
if(s[z]==1){
//翻轉
for(int i=0; i<r/2; i++){
for(int j=0; j<c; j++){
swap(data[i][j],data[r-i-1][j]);
}
}
}
else if(s[z]==0){
//旋轉
for(int i=0; i<r; i++){
for(int j=0; j<c; j++){
trans[i][j]=data[i][j];
}
}
for(int i=0; i<c; i++){
for(int j=0; j<r; j++){
data[i][j]=trans[j][c-(1+i)];
}
}
swap(r,c);
}
}
cout<<r<<" "<<c<<endl;
for(int i=0; i<r; i++){
for(int j=0; j<c; j++){
cout<<data[i][j]<<" ";
}
cout<<endl;
}
}
/*
3 2 2
1 2
3 4
5 6
0 1
*/
return 0;
}
#include
#include
using namespace std;
int main() {
int gmax=-1;
int r,c,m,a;
while(cin>>r>>c>>m){
gmax=max(r,c);
int data[gmax][gmax];
int trans[gmax][gmax];
int s[m];
for(int i=0; i<r; i++){
for(int j=0; j<c; j++){
cin>>data[i][j];
}
}
for(int i=0; i<m; i++){
cin>>a;
s[i]=a;
}
for(int z=0; z<m; z++){
if(s[z]==1){
//翻轉
for(int i=0; i<r/2; i++){
for(int j=0; j<c; j++){
swap(data[i][j],data[r-i-1][j]);
}
}
}
else if(s[z]==0){
//旋轉
for(int i=0; i<r; i++){
for(int j=0; j<c; j++){
trans[i][j]=data[i][j];
}
}
for(int i=0; i<c; i++){
for(int j=0; j<r; j++){
data[i][j]=trans[j][c-(1+i)];
}
}
swap(r,c);
}
}
cout<<r<<" "<<c<<endl;
for(int i=0; i<r; i++){
for(int j=0; j<c; j++){
cout<<data[i][j]<<" ";
}
cout<<endl;
}
}
/*
3 2 2
1 2
3 4
5 6
0 1
*/
return 0;
}
題目給的是矩陣B,要輸出的是原本的矩陣A,所以操作順序要顛倒過來,從最後一個操作往回計算