#include<stdio.h>
int main(){
//声明一个查找函数
int find_array();
//n 是声明了一个
int n=0,num=0;
scanf("%d",&n);
int row=0,column=0;
int array[n][n];
//输入一个数组
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
scanf("%d",&num);
array[i][j]=num;
}
}
//按题目要求输出一个数组
// temp、temp1、temp2、temp3和t都是中间变量
int temp1=0,temp=0,t=-1;
int temp2=n-1;
int temp3=n-2;
//循环用来反复输出右上直角和左下直角的数字
for(int m=0;m<n;m++){
//24-33行代是用来输出右上直角的数
for(int i=temp;i<n-m&&i>=0;i++){
for(int j=temp1;j<n-m&&j>=0;j++){
if(j==n-m-1){
temp1=n-m-1;
}
printf("%d",array[i][j]);
}
}
//为下次循环做准备
temp1=m+1;
temp=temp1;
//35-44行代码用来输出左下直角的数字
for(int i=temp2;i<=n-m-1&&i>m;i--){
for(int j=temp3;j<n-m-1&&j>=m;j--){
if(j==m){
temp3=m;
}
printf("%d",array[i][j]);
}
}
//为下次循环做准备
temp2=n-m-2;
temp3=temp2-1;
}
int main(){
//声明一个查找函数
int find_array();
//n 是声明了一个
int n=0,num=0;
scanf("%d",&n);
int row=0,column=0;
int array[n][n];
//输入一个数组
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
scanf("%d",&num);
array[i][j]=num;
}
}
//按题目要求输出一个数组
// temp、temp1、temp2、temp3和t都是中间变量
int temp1=0,temp=0,t=-1;
int temp2=n-1;
int temp3=n-2;
//循环用来反复输出右上直角和左下直角的数字
for(int m=0;m<n;m++){
//24-33行代是用来输出右上直角的数
for(int i=temp;i<n-m&&i>=0;i++){
for(int j=temp1;j<n-m&&j>=0;j++){
if(j==n-m-1){
temp1=n-m-1;
}
printf("%d",array[i][j]);
}
}
//为下次循环做准备
temp1=m+1;
temp=temp1;
//35-44行代码用来输出左下直角的数字
for(int i=temp2;i<=n-m-1&&i>m;i--){
for(int j=temp3;j<n-m-1&&j>=m;j--){
if(j==m){
temp3=m;
}
printf("%d",array[i][j]);
}
}
//为下次循环做准备
temp2=n-m-2;
temp3=temp2-1;
}
}