#include <stdio.h>
#include <stdlib.h>
int main(void)
{
//矩陣翻轉
int x,y,i,j,k,m,flipx,v,b,ansx,ansy,q,w;
scanf("%d %d\n", &x, &y);
int box[100][100],ans[100][100],fin[100][100];
flipx = x-1 ;
ansx = 0 ;
ansy = x-1 ;
for(int i=0;i<x;i++){
for(int j=0;j<y;j++){
if(j==y){
scanf("%d\n", &box[i][j]);
}
else{
scanf("%d", &box[i][j]);
}
}
}
if(x%2==0){//偶數行
for(int k=0;k<x;k++,flipx--){
for(int m=0;m<y;m++){
ans[k][m]=box[flipx][m];
}
}
}
else if(x%2==1){//奇數行(中間不動)
for(int k=0;k<x;k++,flipx--){
for(int m=0;m<y;m++){
ans[k][m]=box[flipx][m];
}
}
for(int m=0;m<y;m++){//中間
ans[(x-1)/2][m]=box[(x-1)/2][m];
}
}
for(int q=0,ansy=x-1;q<x;q++,ansy--){//旋轉
for(int w=0,ansx=0;w<y;w++,ansx++){
fin[w][q]=ans[ansy][ansx];
}
}
for(int v=0;v<y;v++){//print
for(int b=0;b<x;b++){
printf("%d ", fin[v][b]);
}
if(v<y-1){
printf("\n");
}
}
return 0;
}
#include
#include
int main(void)
{
//矩陣翻轉
int x,y,i,j,k,m,flipx,v,b,ansx,ansy,q,w;
scanf("%d %d\n", &x, &y);
int box[100][100],ans[100][100],fin[100][100];
flipx = x-1 ;
ansx = 0 ;
ansy = x-1 ;
for(int i=0;i<x;i++){
for(int j=0;j<y;j++){
if(j==y){
scanf("%d\n", &box[i][j]);
}
else{
scanf("%d", &box[i][j]);
}
}
}
if(x%2==0){//偶數行
for(int k=0;k<x;k++,flipx--){
for(int m=0;m<y;m++){
ans[k][m]=box[flipx][m];
}
}
}
else if(x%2==1){//奇數行(中間不動)
for(int k=0;k<x;k++,flipx--){
for(int m=0;m<y;m++){
ans[k][m]=box[flipx][m];
}
}
for(int m=0;m<y;m++){//中間
ans[(x-1)/2][m]=box[(x-1)/2][m];
}
}
for(int q=0,ansy=x-1;q<x;q++,ansy--){//旋轉
for(int w=0,ansx=0;w<y;w++,ansx++){
fin[w][q]=ans[ansy][ansx];
}
}
for(int v=0;v<y;v++){//print
for(int b=0;b<x;b++){
printf("%d ", fin[v][b]);
}
if(v<y-1){
printf("\n");
}
}
return 0;
}