#include <bits/stdc++.h> using namespace std; int n,m,d,up,down,left1,right1,map1[507][507],x,y,df[4][2] = {{0,1},{0,-1},{1,0},{-1,0}},flag,g; string get_command(){ if (flag){ flag = 0; return "GO"; } else{ flag = 1; return "LEFT"; } } int main(){ memset(map1,0,sizeof(map1)); x = 200;y = 200;g = 0; //Do not need freopen; while (true){ string feedback; string command = get_command(); cout << command << endl; feedback = get_feedback(command); if (g >= 49999){ cout << "END" << endl; for (int i = 0;i < 500 && !up;i++){ for (int j = 0;j < 500;j++){ if (map1[i][j]){ left1 = j; up = i; break; } } } for (int i = 499;i >= 0 && !down;i--){ for (int j = 499;j >= 0;j--){ if (map1[i][j]){ right1 = j; down = i; break; } } } n = down - up + 1;m = right1 - left1 + 1; cout << n << " " << m << endl; for (int i = 0;i < n;i++){ for (int j = 0;j < m;j++){ cout << (map1[up + i][left1 + j] == 1 ? '.' : '#'); } cout << endl; } break; } else{ //do sth. if (command == "LEFT" || command == "RIGHT"){ if (feedback == "E"){ d = 0; } else if (feedback == "W"){ d = 1; } else if (feedback == "S"){ d = 2; } else{ d = 3; } } else{ if (feedback != "SUCC"){ x += df[d][0]; y += df[d][1]; map1[x][y] = 1; } else{ map1[x][y] = 2; } } } g++; } return 0; }