#include <bits/stdc++.h> using namespace std; int dx[4] = {0, 0, 1, -1}; int dy[4] = {1, -1, 0, 0}; int main() { bool all_explored = false; char map[205][205]; for (int i = 1;i <= 200;i++) { for (int j = 1;j <= 200;j++) { map[i][j] = 'x'; } } map[100][100] = '.'; int x, y; x = y = 100; int mx, my, mxy = 410; int maxx, maxy, maxxy = 0; while (true) { string feedback; cout << "LEFT" << endl; cin >> feedback; if (all_explored) { cout << "END\n"; int n = maxx - mx + 1, m = max (n, maxy - my + 1); cout << n << ' ' << m << endl; for (int i = 0;i < n;i++) { for (int j = 0;j < m;j++) { if (map[i][j] == 'x') { map[i][j] = '#'; } cout << map[i][j]; } cout << endl; } break; } else { cout << "GO\n"; string l; cin >> l; int kx = x, ky = y; if (l == "SUCC") { if (feedback == "N") { map[--x][y] = '.'; } else if (feedback == "W") { map[x][--y] = '.'; } else if (feedback == "S") { map[++x][y] = '.'; } else { map[x][++y] = '.'; } } else { if (feedback == "N") { map[--x][y] = '#'; } else if (feedback == "W") { map[x][--y] = '#'; } else if (feedback == "S") { map[++x][y] = '#'; } else { map[x][++y] = '#'; } } if (x + y < mxy) { mxy = x + y; mx = x; my = y; } if (x + y > maxxy) { maxxy = x + y; maxx = x; maxy = y; } x = kx; y = ky; int cnt = 0; for (int i = 0;i < 4;i++) { if (map[x + dx[i]][y + dy[i]] == '#') { ++cnt; } } if (cnt == 3) { all_explored = true; } } } return 0; }