#include<bits/stdc++.h> #define cst const #define csti const int #define pii pair<int,int> #define rep(i,l,r) for(int (i)=(l);(i)<=(r);++(i)) #define per(i,l,r) for(int (i)=(l);(i)>=(r);--(i)) #define eb emplace_back #define fi first #define se second #define il inline //#define int long long //#define LOL #ifdef LOL csti inf=0x3f3f3f3f3f3f3f3f; #else csti inf=0x3f3f3f3f; #endif csti N=307,mod=1; il int max(csti x,csti y){ return x>y?x:y; } il int min(csti x,csti y){ return x<y?x:y; } il int abs_(csti x){ return x<0?-x:x; } using namespace std; int n,m,ln=150,lm=150,rn=150,rm=150,nn=150,nm=150; char a[N][N]; int b[N][N],cnt=0,ncnt; int px=-1,py=-1; string pfb; int nowf=0,S=0; string get(){ if(px==-1&&py==-1)return "LEFT"; if(pfb!="FAIL"){ if(S>=4||nowf){ S=0,nowf=1; if(b[nn+px][nm+py]==ncnt-1){ ncnt--; } return "LEFT"; } S=0,nowf=0; return "GO"; } return "LEFT"; } void solve(cst string cm,cst string fb){ if(cm=="LEFT"){ if(fb=="N")px=-1,py=0; if(fb=="S")px=1,py=0; if(fb=="W")px=0,py=-1; if(fb=="E")px=0,py=1; return; }else{ ln=min(ln,nn+px),lm=min(lm,nm+py), rn=max(rn,nn+px),rm=max(rm,nm+py); if(fb=="SUCC"){ nn+=px,nm+=py; if(a[nn][nm]!='.') a[nn][nm]='.',b[nn][nm]=++cnt, ncnt=cnt; }else ++S; } } signed main(){ //ios::sync_with_stdio(0),cin.tie(0),cout.tie(0); //freopen(".in","r",stdin),freopen(".out","w",stdout); int cnt=0; rep(i,0,300){ rep(j,0,300){ a[i][j]='#'; } } a[150][150]='.',b[150][150]=0; while(true){ string fb; string cm=get(); cout<<cm<<endl; cin>>fb; ++cnt; if(cnt>49){ // cout<<"END"<<endl; cout<<rn-ln+1<<' '<<rm-lm+1<<endl; rep(i,ln,rn){ rep(j,lm,rm){ cout<<a[i][j]; }cout<<endl; } break; // }else{ solve(cm,fb); }pfb=fb; } return 0; } /* ##### #...# ##.## #...# ##### N FAIL W FAIL S FAIL E FAIL */