#include <iostream>
using namespace std;
struct Maze {
int id_x;
int id_y;
int north;
int east;
int south;
int west;
};
template<size_t N, size_t N2>
void check_consistent(Maze(&maze)[N][N2], int y, int x) {
cout << "idx = " << maze[y][x].id_x << endl;
}
int main() {
Maze maze[3][4], maze2[1][1]={777};
// init value
int idx=0;
for(unsigned j = 0; j < 3; ++j) {
for(unsigned i = 0; i < 4; ++i) {
maze[j][i] = {idx++};
}
}
// check value
check_consistent(maze, 0, 0);
check_consistent(maze, 0, 1);
check_consistent(maze, 1, 0);
check_consistent(maze2, 0, 0);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKc3RydWN0IE1hemUgewogICAgaW50IGlkX3g7CiAgICBpbnQgaWRfeTsKICAgIGludCBub3J0aDsKICAgIGludCBlYXN0OwogICAgaW50IHNvdXRoOwogICAgaW50IHdlc3Q7Cn07Cgp0ZW1wbGF0ZTxzaXplX3QgTiwgc2l6ZV90IE4yPgp2b2lkIGNoZWNrX2NvbnNpc3RlbnQoTWF6ZSgmbWF6ZSlbTl1bTjJdLCBpbnQgeSwgaW50IHgpIHsKICAgIGNvdXQgPDwgImlkeCA9ICIgPDwgbWF6ZVt5XVt4XS5pZF94IDw8IGVuZGw7Cn0KCmludCBtYWluKCkgewogICAgTWF6ZSBtYXplWzNdWzRdLCBtYXplMlsxXVsxXT17Nzc3fTsKCiAgICAvLyBpbml0IHZhbHVlCiAgICBpbnQgaWR4PTA7CiAgICBmb3IodW5zaWduZWQgaiA9IDA7IGogPCAzOyArK2opIHsKICAgICAgICBmb3IodW5zaWduZWQgaSA9IDA7IGkgPCA0OyArK2kpIHsKICAgICAgICAgICAgbWF6ZVtqXVtpXSA9IHtpZHgrK307CiAgICAgICAgfQogICAgfQoKICAgIC8vIGNoZWNrIHZhbHVlCiAgICBjaGVja19jb25zaXN0ZW50KG1hemUsIDAsIDApOwogICAgY2hlY2tfY29uc2lzdGVudChtYXplLCAwLCAxKTsKICAgIGNoZWNrX2NvbnNpc3RlbnQobWF6ZSwgMSwgMCk7CiAgICBjaGVja19jb25zaXN0ZW50KG1hemUyLCAwLCAwKTsKCiAgICByZXR1cm4gMDsKfQo=