#include<bits/stdc++.h> using namespace std; typedef long long ll; char c[205][205]; bool v[215][215][5]; ll minx,miny,maxx,maxy,f; string query(string res) { cout<<res<<"\n"; string w; cin>>w; return w; } ll get(string f) { if(f=="E") return 0; else if(f=="W") return 1; else if(f=="S") return 2; else return 3; } void dfs(ll x,ll y,string f) { minx=min(x,minx),miny=min(y,miny); maxx=max(x,maxx),maxy=max(y,maxy); if(!v[x][y][get(f)]) { v[x][y][get(f)]=1; string q=query("GO"); ll nx=x,ny=y; ll s=get(f); if(s==0) ny=y+1; else if(s==1) ny=y-1; else if(s==2) nx=x+1; else nx=x-1; minx=min(nx,minx),miny=min(ny,miny); maxx=max(nx,maxx),maxy=max(ny,maxy); if(q=="SUCC") { c[nx][ny]='.'; dfs(nx,ny,f); } else { c[nx][ny]='#'; dfs(x,y,query("LEFT")); } } else { bool flag=false; for(int i=0;i<=3;i++) if(!v[x][y][i]) { flag=true; break; } if(flag) dfs(x,y,query("LEFT")); } } int main() { minx=miny=maxx=maxy=100; c[100][100]='.'; dfs(100,100,query("LEFT")); cout<<"END\n"; for(int i=minx;i<=maxx;i++) { for(int j=miny;j<=maxy;j++) { if(c[i][j]=='\0'||c[i][j]=='#') cout<<"#"; else cout<<"."; } cout<<"\n"; } return 0; }