#include<bits/stdc++.h>
using namespace std;
int dx[4]={-1,0,1,0};
int dy[4]={0,-1,0,1};
int a[305][305],max_x=0,max_y=0,min_x=300,min_y=300,vis[305][305];
string feedback;
vector<string> movement;
void dfs(int x,int y,int dir,vector<string> mov,int back_x,int back_y,int back_dir)//Ĭʼ105105СxyС 1: 2: 3: 4: ̽Ҫback_xback_y 
{
	vis[x][y]=true;
	max_x=max(max_x,x);
	max_y=max(max_y,y);
	min_x=min(min_x,x);
	min_y=min(min_y,y);
	//dir
	if(vis[x+dx[dir-1]][y+dy[dir-1]]==false) 
	{
		printf("GO\n");
		cin>>feedback;
		if(feedback=="SUCC")
		{
			a[x][y]=1;
			mov.push_back("GO");
			dfs(x+dx[dir-1],y+dy[dir-1],dir,mov,x,y,dir);
			mov.pop_back();		
		}
		else
		{
			max_x=max(max_x,x+dx[dir-1]);
			min_x=min(min_x,x+dx[dir-1]);
			max_y=max(max_y,y+dy[dir-1]);
			min_y=min(min_y,y+dy[dir-1]);		
		}
	}
	else
	{
		max_x=max(max_x,x+dx[dir-1]);
		min_x=min(min_x,x+dx[dir-1]);
		max_y=max(max_y,y+dy[dir-1]);
		min_y=min(min_y,y+dy[dir-1]);		
	}
	for(int i=1;i<=3;i++)
	{
		mov.push_back("LEFT");
		printf("LEFT\n");
		cin>>feedback;
		if(dir==4)//һ feedbackӦû(ֻҪһжϷfeedback) 
		dir=1;
		else
		dir++;
		if(vis[x+dx[dir-1]][y+dy[dir-1]]==false) 
		{
			printf("GO\n");
			cin>>feedback;
			if(feedback=="SUCC")
			{
				a[x][y]=1;
				mov.push_back("GO");
				dfs(x+dx[dir-1],y+dy[dir-1],dir,mov,x,y,dir);
				mov.pop_back();		
			}
			else
			{
				max_x=max(max_x,x+dx[dir-1]);
				min_x=min(min_x,x+dx[dir-1]);
				max_y=max(max_y,y+dy[dir-1]);
				min_y=min(min_y,y+dy[dir-1]);		
			}
		}
		else
		{
			max_x=max(max_x,x+dx[dir-1]);
			min_x=min(min_x,x+dx[dir-1]);
			max_y=max(max_y,y+dy[dir-1]);
			min_y=min(min_y,y+dy[dir-1]);		
		}
		mov.pop_back();	
	}
	if(x==105&&y==105)//ս 
	{
		printf("END\n"); 
		int n=max_x-min_x+1,m=max_y-min_y+1;
		printf("%d %d\n",n,m);
		for(int i=min_x;i<=max_x;i++)
		{
			for(int j=min_y;j<=max_y;j++)
			{
				if(a[i][j]==1)
				cout<<'.';
				else
				cout<<'*';
			}
			cout<<endl;
		}
	}
	else
	{
		//ԭ·
		vector<string> mov2;
		for(auto i:mov)
		mov2.push_back(i);
		reverse(mov2.begin(),mov2.end());
		int nowx=x,nowy=y,nowdir=dir;
		printf("RIGHT\n");
		cin>>feedback;
		if(nowdir==1)
		nowdir=4;
		else
		nowdir--;
		for(auto i:mov)
		{
			if(i=="GO")
			{
				printf("GO\n");
				nowx+=dx[nowdir-1];
				nowy+=dy[nowdir-1];
			}
			else
			{
				if(i=="LEFT")
				{
					printf("RIGHT\n");
					if(nowdir==1)
					nowdir=4;
					else
					nowdir--;
				}
				else
				{
					printf("LEFT1\n");
					if(nowdir==4)
					nowdir=1;
					else
					nowdir++;
				}
			}
			cin>>feedback;
			if(nowx==back_x&&nowy==back_y)
			break;
		} 
		while(nowdir!=back_dir)
		{
			printf("LEFT\n");
			cin>>feedback;
			if(nowdir==4)
			nowdir=1;
			else
			nowdir++;
		}
	}
}
int main()
{
	int dir;
	printf("LEFT\n");
	cin>>feedback;
	if(feedback=="N")
	dir=1;
	else
	{
		if(feedback=="E")
		dir=4;
		else
		{
			if(feedback=="S")
			dir=3;
			else
			dir=2;
		}
	}
	a[105][105]=1;
	dfs(105,105,dir,movement,105,105,dir);
	return 0;
}