/*找规律,设i为行列之和,则i从2到2n,当i为偶数时,行数为奇数,是从左下往右上扫描,所以行号(设为j)为从i-1到1,列数为i-j,
同理,当i为奇数时,行号j为偶数,为从右上向左下扫描,因此行号为从1到i-1,列好仍未i-j;
这里我们采用补全原图的思想,补成一个完整的金字塔型,从上到下逐层递加,不补全的话就要把矩形分成两个金字塔型三角形去算
要注意不全后的图形中只有在矩形框内的才输出*/
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
const int N = 510;
int n;
int q[N][N];
int main()
{
cin >> n;
for(int i = 1; i <= n; i++)
for(int j = 1; j <= n; j++)
cin >> q[i][j];
for(int i = 2; i <= n * 2; i++)
{
if(i % 2 == 0)
{
for(int j = i - 1; j >= 1; j--)
if(j >= 1 && j <= n && i - j >= 1 && i - j <= n)
cout << q[j][i - j] << ' ';
}
else
{
for(int j = 1; j <= i - 1; j++)
if(j >= 1 && j <= n && i - j >= 1 && i - j <= n)
cout << q[j][i - j] << ' ';
}
}
return 0;
}