#include<bits/stdc++.h> #define int long long using namespace std; const int MAXN=105; int minnx=1e18,minny=1e18,maxnx=0,maxny=0; char ans[MAXN][MAXN]; map<string,int> mp; string t; int dirx[5]={0,-1,0,1,0},diry[5]={0,0,1,0,-1}; void work(int x,int y,int dir,int now=0){ ans[x][y]='.'; minnx=min(minnx,x); maxnx=max(maxnx,x); minny=min(minny,y); maxny=max(maxny,y); cout<<"GO"<<endl; string res; cin>>res; if(res=="FAIL"){ ans[x+dirx[mp[t]]][y+diry[mp[t]]]='#'; cout<<"LEFT"<<endl; }else{ work(x+dirx[mp[t]],y+diry[mp[t]],mp[t]); cout<<"RIGHT"<<endl; } cin>>res; t=res; cout<<"GO"<<endl; cin>>res; if(res=="FAIL"){ ans[x+dirx[mp[t]]][y+diry[mp[t]]]='#'; cout<<"RIGHT"<<endl; cin>>res; t=res; cout<<"RIGHT"<<endl; cin>>res; t=res; }else{ work(x+dirx[mp[t]],y+diry[mp[t]],mp[t]); } cout<<"GO"<<endl; cin>>res; if(res=="FAIL"){ ans[x+dirx[mp[t]]][y+diry[mp[t]]]='#'; cout<<"RIGHT"<<endl; }else{ work(x+dirx[mp[t]],y+diry[mp[t]],mp[t]); cout<<"LEFT"<<endl; } cin>>res; t=res; cout<<"GO"<<endl; cin>>res; if(now==1){ if(res=="FAIL"){ ans[x+dirx[mp[t]]][y+diry[mp[t]]]='#'; }else{ work(x+dirx[mp[t]],y+diry[mp[t]],mp[t]); } } } signed main(){ mp["N"]=1; mp["E"]=2; mp["S"]=3; mp["W"]=4; cout<<"LEFT"<<endl; string res; cin>>res; t=res; work(51,51,mp[res],1); cout<<"END"<<endl; cout<<maxnx-minnx+3<<" "<<maxny-minny+3<<endl; for(int i=minnx-1;i<=maxnx+1;i++){ for(int j=minny-1;j<=maxny+1;j++){ if(ans[i][j]!='.'&&ans[i][j]!='#'){ cout<<'#'; continue; } cout<<ans[i][j]; } cout<<endl; } return 0; } /* ### #.## #..# #### #### #..# #.#### #....# #.#.# ####### */