#include <iostream>
using namespace std;
const int MAX_SIZE = 50;
int main() {
int mtSize, windLine[MAX_SIZE + 1][MAX_SIZE + 1];
cin >> mtSize;
for (int line = 1; line <= mtSize; ++line) {
for (int col = 1; col <= mtSize; ++col) {
cin >> windLine[line][col];
}
}
int linePos = 1, colPos = 1, lPlusC = linePos + colPos;
int lineDir = -1, colDir = 1;
for (int i = 1, j = 1; i <= mtSize || j <= mtSize;) {
cout << windLine[linePos][colPos] << " ";
if (lPlusC % 2) {
if ((lineDir == 0 && colDir == 1 && lPlusC <= mtSize + 1) ||
(lineDir == 1 && colDir == 0 && lPlusC >= mtSize + 1)) {
lineDir = 1;
colDir = -1;
}
} else {
if ((lineDir == 0 && colDir == 1 && lPlusC >= mtSize + 1) ||
(lineDir == 1 && colDir == 0 && lPlusC <= mtSize + 1)) {
lineDir = -1;
colDir = 1;
}
}
if ((lineDir == 1 && colDir == -1 && lPlusC < mtSize + 1 && colPos == 1) ||
(lineDir == -1 && colDir == 1 && lPlusC >= mtSize + 1 && colPos == mtSize)) {
lineDir = 1;
colDir = 0;
}
if ((lineDir == 1 && colDir == -1 && lPlusC >= mtSize + 1 && linePos == mtSize) ||
(lineDir == -1 && colDir == 1 && lPlusC < mtSize + 1 && linePos == 1)) {
lineDir = 0;
colDir = 1;
}
linePos += lineDir;
colPos += colDir;
lPlusC = linePos + colPos;
if (colPos > mtSize) {
colPos = ++j;
linePos = 1;
lPlusC = linePos + colPos;
}
if (linePos > mtSize) {
linePos = ++i;
colPos = 1;
lPlusC = linePos + colPos;
}
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY29uc3QgaW50IE1BWF9TSVpFID0gNTA7CgppbnQgbWFpbigpIHsKICAgIGludCBtdFNpemUsIHdpbmRMaW5lW01BWF9TSVpFICsgMV1bTUFYX1NJWkUgKyAxXTsKICAgIGNpbiA+PiBtdFNpemU7CiAgICBmb3IgKGludCBsaW5lID0gMTsgbGluZSA8PSBtdFNpemU7ICsrbGluZSkgewogICAgICAgIGZvciAoaW50IGNvbCA9IDE7IGNvbCA8PSBtdFNpemU7ICsrY29sKSB7CiAgICAgICAgICAgIGNpbiA+PiB3aW5kTGluZVtsaW5lXVtjb2xdOwogICAgICAgIH0KICAgIH0KICAgIGludCBsaW5lUG9zID0gMSwgY29sUG9zID0gMSwgbFBsdXNDID0gbGluZVBvcyArIGNvbFBvczsKICAgIGludCBsaW5lRGlyID0gLTEsIGNvbERpciA9IDE7CiAgICBmb3IgKGludCBpID0gMSwgaiA9IDE7IGkgPD0gbXRTaXplIHx8IGogPD0gbXRTaXplOykgewogICAgICAgIGNvdXQgPDwgd2luZExpbmVbbGluZVBvc11bY29sUG9zXSA8PCAiICI7CiAgICAgICAgaWYgKGxQbHVzQyAlIDIpIHsKICAgICAgICAgICAgaWYgKChsaW5lRGlyID09IDAgJiYgY29sRGlyID09IDEgJiYgbFBsdXNDIDw9IG10U2l6ZSArIDEpIHx8IAogICAgICAgICAgICAgICAgKGxpbmVEaXIgPT0gMSAmJiBjb2xEaXIgPT0gMCAmJiBsUGx1c0MgPj0gbXRTaXplICsgMSkpIHsKICAgICAgICAgICAgICAgIGxpbmVEaXIgPSAxOwogICAgICAgICAgICAgICAgY29sRGlyID0gLTE7CiAgICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBpZiAoKGxpbmVEaXIgPT0gMCAmJiBjb2xEaXIgPT0gMSAmJiBsUGx1c0MgPj0gbXRTaXplICsgMSkgfHwgCiAgICAgICAgICAgICAgICAobGluZURpciA9PSAxICYmIGNvbERpciA9PSAwICYmIGxQbHVzQyA8PSBtdFNpemUgKyAxKSkgewogICAgICAgICAgICAgICAgbGluZURpciA9IC0xOwogICAgICAgICAgICAgICAgY29sRGlyID0gMTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBpZiAoKGxpbmVEaXIgPT0gMSAmJiBjb2xEaXIgPT0gLTEgJiYgbFBsdXNDIDwgbXRTaXplICsgMSAmJiBjb2xQb3MgPT0gMSkgfHwKICAgICAgICAgICAgKGxpbmVEaXIgPT0gLTEgJiYgY29sRGlyID09IDEgJiYgbFBsdXNDID49IG10U2l6ZSArIDEgJiYgY29sUG9zID09IG10U2l6ZSkpIHsKICAgICAgICAgICAgbGluZURpciA9IDE7CiAgICAgICAgICAgIGNvbERpciA9IDA7CiAgICAgICAgfQogICAgICAgIGlmICgobGluZURpciA9PSAxICYmIGNvbERpciA9PSAtMSAmJiBsUGx1c0MgPj0gbXRTaXplICsgMSAmJiBsaW5lUG9zID09IG10U2l6ZSkgfHwgCiAgICAgICAgICAgIChsaW5lRGlyID09IC0xICYmIGNvbERpciA9PSAxICYmIGxQbHVzQyA8IG10U2l6ZSArIDEgJiYgbGluZVBvcyA9PSAxKSkgewogICAgICAgICAgICBsaW5lRGlyID0gMDsKICAgICAgICAgICAgY29sRGlyID0gMTsKICAgICAgICB9CiAgICAgICAgbGluZVBvcyArPSBsaW5lRGlyOwogICAgICAgIGNvbFBvcyArPSBjb2xEaXI7CiAgICAgICAgbFBsdXNDID0gbGluZVBvcyArIGNvbFBvczsKICAgICAgICBpZiAoY29sUG9zID4gbXRTaXplKSB7CiAgICAgICAgICAgIGNvbFBvcyA9ICsrajsKICAgICAgICAgICAgbGluZVBvcyA9IDE7CiAgICAgICAgICAgIGxQbHVzQyA9IGxpbmVQb3MgKyBjb2xQb3M7CiAgICAgICAgfQogICAgICAgIGlmIChsaW5lUG9zID4gbXRTaXplKSB7CiAgICAgICAgICAgIGxpbmVQb3MgPSArK2k7CiAgICAgICAgICAgIGNvbFBvcyA9IDE7CiAgICAgICAgICAgIGxQbHVzQyA9IGxpbmVQb3MgKyBjb2xQb3M7CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIDA7Cn0K