#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 lineDir = 0, colDir = 1;
/*
cosmin
2025-02-23 11:19:54
combine these 2 variables into a single direction variable -> solved
*/
for (int linePos = 1, colPos = 1; linePos <= mtSize && colPos <= mtSize; ) {
/*
cosmin
2025-02-23 11:23:47
there should be an empty space after the ";" -> solved
*/
cout << windLine[linePos][colPos] << " ";
//int lPlusC = linePos + colPos;
/*
cosmin
2025-02-23 11:24:30
get rid of this variable -> solved
*/
if ((linePos + colPos) % 2 && ((lineDir == 0 && colDir == 1 &&
/*
cosmin
2025-02-23 11:24:36
simplify these conditions
*/
linePos + colPos <= mtSize + 1) ||
(lineDir == 1 && colDir == 0 && linePos + colPos >= mtSize + 1))) {
lineDir = 1;
colDir = -1;
}
if ((linePos + colPos) % 2 == 0 && ((lineDir == 0 && colDir == 1 &&
linePos + colPos >= mtSize + 1) || (lineDir == 1 && colDir == 0 &&
linePos + colPos <= mtSize + 1))) {
lineDir = -1;
colDir = 1;
}
if ((lineDir == 1 && colDir == -1 && linePos + colPos < mtSize + 1 &&
colPos == 1) || (lineDir == -1 && colDir == 1 &&
linePos + colPos >= mtSize + 1 && colPos == mtSize)) {
lineDir = 1;
colDir = 0;
}
if ((lineDir == 1 && colDir == -1 && linePos + colPos >= mtSize + 1 &&
linePos == mtSize) || (lineDir == -1 && colDir == 1 &&
linePos + colPos < mtSize + 1 && linePos == 1 )) {
lineDir = 0;
colDir = 1;
}
linePos += lineDir;
colPos += colDir;
//lPlusC = linePos + colPos;
}
return 0;
}