#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
*/