#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;
}
/*
###
#.##
#..#
####
####
#..#
#.####
#....#
#.#.#
#######
*/