#include <stdio.h>
#define inRoom(x, y) (x >= 0 && x < w && y >= 0 && y < d)
int main()
{
int x, y, w, d, currentX, currentY;
int direction;
int hasMirror[20][20];
int dx[4] = {0, 0, 1, -1};
int dy[4] = {1, -1, 0, 0};
int startWindow;
int t, testCases;
for (t = 0; t < testCases; t++) {
for (y = d - 1; y >=0; y--)
for (x = 0; x < w; x++)
scanf("%d", &(hasMirror
[x
][y
]));
for (startWindow = 0; startWindow < 2 * (w + d); startWindow++) {
if (startWindow < w) {
currentX = startWindow;
currentY = -1;
direction = 0;
} else if (startWindow >= w && startWindow < d + w) {
currentX = w;
currentY = startWindow - w;
direction = 3;
} else if (startWindow >= d + w && startWindow < d + 2 * w) {
currentX = 2 * w + d - startWindow - 1;
currentY = d;
direction = 1;
} else {
currentX = -1;
currentY = 2 * (d + w) - startWindow - 1;
direction = 2;
}
do {
currentX += dx[direction];
currentY += dy[direction];
if (hasMirror[currentX][currentY])
direction = (direction + 2) % 4;
} while (inRoom(currentX, currentY));
if (currentY < 0)
else if (currentX >= w)
else if (currentY >= d)
printf("%d\n", d
+ 2 * w
- currentX
- 1); else
printf("%d\n", 2 * (d
+ w
) - currentY
- 1); }
}
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgojZGVmaW5lIGluUm9vbSh4LCB5KSAoeCA+PSAwICYmIHggPCB3ICYmIHkgPj0gMCAmJiB5IDwgZCkKCmludCBtYWluKCkKewogIGludCB4LCB5LCB3LCBkLCBjdXJyZW50WCwgY3VycmVudFk7CiAgaW50IGRpcmVjdGlvbjsKICBpbnQgaGFzTWlycm9yWzIwXVsyMF07CiAgaW50IGR4WzRdID0gezAsIDAsIDEsIC0xfTsKICBpbnQgZHlbNF0gPSB7MSwgLTEsIDAsIDB9OwogIGludCBzdGFydFdpbmRvdzsKICBpbnQgdCwgdGVzdENhc2VzOwoKICBzY2FuZigiJWQiLCAmdGVzdENhc2VzKTsKICBmb3IgKHQgPSAwOyB0IDwgdGVzdENhc2VzOyB0KyspIHsKICAgIHNjYW5mKCIlZCVkIiwgJncsICZkKTsKCiAgICBmb3IgKHkgPSBkIC0gMTsgeSA+PTA7IHktLSkKICAgICAgZm9yICh4ID0gMDsgeCA8IHc7IHgrKykKCXNjYW5mKCIlZCIsICYoaGFzTWlycm9yW3hdW3ldKSk7CgogICAgZm9yIChzdGFydFdpbmRvdyA9IDA7IHN0YXJ0V2luZG93IDwgMiAqICh3ICsgZCk7IHN0YXJ0V2luZG93KyspIHsKICAgICAgaWYgKHN0YXJ0V2luZG93IDwgdykgewoJY3VycmVudFggPSBzdGFydFdpbmRvdzsKCWN1cnJlbnRZID0gLTE7CglkaXJlY3Rpb24gPSAwOwogICAgICB9IGVsc2UgaWYgKHN0YXJ0V2luZG93ID49IHcgJiYgc3RhcnRXaW5kb3cgPCBkICsgdykgewoJY3VycmVudFggPSB3OwoJY3VycmVudFkgPSBzdGFydFdpbmRvdyAtIHc7CglkaXJlY3Rpb24gPSAzOwogICAgICB9IGVsc2UgaWYgKHN0YXJ0V2luZG93ID49IGQgKyB3ICYmIHN0YXJ0V2luZG93IDwgZCArIDIgKiB3KSB7CgljdXJyZW50WCA9IDIgKiB3ICsgZCAtIHN0YXJ0V2luZG93IC0gMTsKCWN1cnJlbnRZID0gZDsKCWRpcmVjdGlvbiA9IDE7CiAgICAgIH0gZWxzZSB7CgljdXJyZW50WCA9IC0xOwoJY3VycmVudFkgPSAyICogKGQgKyB3KSAtIHN0YXJ0V2luZG93IC0gMTsKCWRpcmVjdGlvbiA9IDI7CiAgICAgIH0KICAgIAogICAgICBkbyB7CgljdXJyZW50WCArPSBkeFtkaXJlY3Rpb25dOwoJY3VycmVudFkgKz0gZHlbZGlyZWN0aW9uXTsKCWlmIChoYXNNaXJyb3JbY3VycmVudFhdW2N1cnJlbnRZXSkKCSAgZGlyZWN0aW9uID0gKGRpcmVjdGlvbiArIDIpICUgNDsKICAgICAgfSB3aGlsZSAoaW5Sb29tKGN1cnJlbnRYLCBjdXJyZW50WSkpOwogICAgCiAgICAgIGlmIChjdXJyZW50WSA8IDApCglwcmludGYoIiVkXG4iLCBjdXJyZW50WCk7CiAgICAgIGVsc2UgaWYgKGN1cnJlbnRYID49IHcpCglwcmludGYoIiVkXG4iLCBjdXJyZW50WSArIHcpOwogICAgICBlbHNlIGlmIChjdXJyZW50WSA+PSBkKQoJcHJpbnRmKCIlZFxuIiwgZCArIDIgKiB3IC0gY3VycmVudFggLSAxKTsKICAgICAgZWxzZSAKCXByaW50ZigiJWRcbiIsIDIgKiAoZCArIHcpIC0gY3VycmVudFkgLSAxKTsKICAgIH0KICB9CiAgcmV0dXJuIDA7Cn0K