#include<bits/stdc++.h>
using namespace std;
//#define int long long
char c[309][309];
int nowx=150,nowy=150,nowd;
string s;
const int dx[]={-1,1,0,0};
const int dy[]={0,0,-1,1};
bool mem[309][309];
void GetD(string s,int &d){
	if(s=="N")d=0;
	if(s=="S")d=2;
	if(s=="W")d=1;
	if(s=="E")d=3;
}
void solve(int x,int y,int d){
	if(c[x+dx[d]][y+dy[d]]=='?'){//ǰ 
		puts("GO");
		cin>>s;
		if(s=="FAIL")c[x+dx[d]][y+dy[d]]='#';
		else c[x+dx[d]][y+dy[d]]='.',mem[x+dx[d]][y+dy[d]]=1,solve(x+dx[d],y+dy[d],d);
	}
	else {
		puts("LEFT");
		cin>>s;
		int dd;GetD(s,dd);
		if(c[x+dx[dd]][y+dy[dd]]=='?'){//×ó
			puts("GO");
			cin>>s;
			if(s=="FAIL")c[x+dx[dd]][y+dy[dd]]='#';
			else c[x+dx[dd]][y+dy[dd]]='.',mem[x+dx[dd]][y+dy[dd]]=1,solve(x+dx[dd],y+dy[dd],dd);
		}
		puts("RIGHT");
		cin>>s;
		puts("RIGHT");
		cin>>s;GetD(s,dd);
		if(c[x+dx[dd]][y+dy[dd]]=='?'){//×ó
			puts("GO");
			cin>>s;
			if(s=="FAIL")c[x+dx[dd]][y+dy[dd]]='#';
			else c[x+dx[dd]][y+dy[dd]]='.',mem[x+dx[dd]][y+dy[dd]]=1,solve(x+dx[dd],y+dy[dd],dd);
		}
		puts("LEFT");
		cin>>s;
	}
	int cnt=0,dd=d;
	while(!mem[x+dx[dd]][y+dy[dd]]){
		puts("LEFT");
		cin>>s;cnt++;
		GetD(s,dd);
	}
	puts("GO");
	cin>>s;
	puts("LEFT");
	cin>>s;
	puts("LEFT");
	cin>>s;
}
main(){
	for(int i=0;i<=300;i++)for(int j=0;j<=300;j++)c[i][j]='?';
	c[nowx][nowy]='.';
	puts("LEFT");
	cin>>s;GetD(s,nowd);
	solve(nowx,nowy,nowd);
	puts("LEFT");
	cin>>s;GetD(s,nowd);
	solve(nowx,nowy,nowd);
	puts("LEFT");
	cin>>s;GetD(s,nowd);
	solve(nowx,nowy,nowd);
	puts("LEFT");
	cin>>s;GetD(s,nowd);
	solve(nowx,nowy,nowd);
	puts("LEFT");
	cin>>s;GetD(s,nowd);
	int U=1e9,D=0,L=1e9,R=0;
	for(int i=1;i<=300;i++){
		for(int j=1;j<=300;j++){
			if(c[i][j]!='?')U=min(U,i),D=max(D,i),L=min(L,j),R=max(R,j);
		}
	}
	puts("END");
	for(int i=U;i<=D;i++,puts("")){
		for(int j=L;j<=R;j++){
			if(c[i][j]=='.')cout<<'.';
			else cout<<'#';
		}
	}
}