#include<bits/stdc++.h>
using namespace std;
string command, feedback;
char ans[303][303];
int mxl = 150, mxr = 150, mxu = 150, mxd = 150;
bool vis[303][303];
void dfs(int x, int y, char dic, int turn){
	command = "GO";
	cout<<command<<endl;
	cin>>feedback;
	bool flag = 1;
	if(dic == 'W' && vis[x][y - 1])flag = 0;
	if(dic == 'N' && vis[x - 1][y])flag = 0;
	if(dic == 'S' && vis[x + 1][y])flag = 0;
	if(dic == 'E' && vis[x][y + 1])flag = 0;
	if(feedback == "SUCC" && flag){
		if(dic == 'W')dfs(x, y - 1, 'W', 0), ans[x][y - 1] = '.', mxl--, vis[x][y - 1] = 1;
		else if(dic == 'N')dfs(x - 1, y, 'N', 0), ans[x - 1][y] = '.', mxu--, vis[x - 1][y] = 1;
		else if(dic == 'S')dfs(x + 1, y, 'S', 0), ans[x + 1][y] = '.', mxd++, vis[x + 1][y] = 1;
		else dfs(x, y + 1, 'E', 0), ans[x][y + 1] = '.', mxr++, vis[x][y + 1] = 1;
	}
	else{
		turn++;
		if(turn == 4)return;
		command = "LEFT";
		cout<<command<<endl;
		cin>>feedback;
		dic = feedback[0];
		if(dic == 'W')dfs(x, y - 1, 'W', turn);
		else if(dic == 'N')dfs(x - 1, y, 'N', turn);
		else if(dic == 'S')dfs(x + 1, y, 'S', turn);
		else dfs(x, y + 1, 'E', turn);
	}
}
int main(){
	memset(ans, '#', sizeof(ans));
	command = "LEFT";
	cout<<command<<endl;
	cin>>feedback;
	ans[150][150] = '.';vis[150][150] = 1;
	dfs(150, 150, feedback[0], 0);
	cout<<"END"<<endl;
	for(int i = mxu - 1;i <= mxd + 1;i++){
		for(int j = mxl - 1;j <= mxr + 1;j++){
			cout<<ans[i][j];
		}
		cout<<endl;
	}
}