#include<bits/stdc++.h>
using namespace std;
int a[1001][1001];//0δ 1Õϰ­ 2¿ÉÐÐ 
int fzx[200];
int dx[4] = {-1, 0, 1, 0};
int dy[4] = {0, -1, 0, 1};
bool f[1001][1001];
int main ()
{
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	int nx = 100, ny = 100;
	cout << "LEFT" << endl;
	a[nx][ny] = 2;
	int fx;
	fzx['N'] = 0;
	fzx['S'] = 2;
	fzx['W'] = 1;
	fzx['E'] = 3;
	char s;
	cin >> s;
	fx = fzx[s];
	int s1 = 1, s2 = 0;
	int maxx = 100, minx = 100, maxy = 100, miny = 100;
	while (true)
	{
		string feedback; 
		if (a[nx + dx[fx]][ny + dy[fx]] == 0)
		{
			s1 = 0;
			s2 = 0;
			cout << "GO" << endl;
			cin >> feedback;
			if (feedback == "FAIL")
			{
				a[nx + dx[fx]][ny + dy[fx]] = 1;
			}
			else
			{
				nx += dx[fx];
				ny += dy[fx];
			}
		}
		else if (a[nx + dx[(fx + 1) % 4]][ny + dy[(fx + 1) % 4]] == 0)
		{
			s2 = 0;
			s1++;
			fx = (fx + 1) % 4;
			cout << "LEFT" << endl;
			cin >> feedback;
			cout << "Go" << endl;
			cin >> feedback;
			if (feedback == "FAIL")
			{
				a[nx + dx[fx]][ny + dy[fx]] = 1;
			}
			else
			{
				nx += dx[fx];
				ny += dy[fx];
			}
		}
		else if (a[nx + dx[(fx + 3) % 4]][ny + dy[(fx + 3) % 4]] == 0) 
		{
			s2++;
			s1 = 0;
			fx = (fx + 3) % 4;
			cout << "RIGHT" << endl;
			cin >> feedback;
			cout << "Go" << endl;
			cin >> feedback;
			if (feedback == "FAIL")
			{
				a[nx + dx[fx]][ny + dy[fx]] = 1;
			}
			else
			{
				nx += dx[fx];
				ny += dy[fx];
			}
		} 
		else 
		{
			cout << "END" << endl;
			cout << maxx - minx + 1 << " " << maxy - miny + 1 << endl;
			for (int i = minx; i <= maxx; i++) 
			{
 				for (int j = miny; j <= maxy; j++) 
				{
 					if (a[i][j] == 0 || a[i][j] == 1)
 					{
 						cout << "#";
					}
					else
					{
						cout << ".";
					}
 				}
				cout << endl;
 			}
 			return 0;
		}
		maxx = max(maxx, nx + dx[fx]);
		maxy = max(maxy, ny + dy[fx]);
		minx = min(minx, nx + dx[fx]);
		miny = min(miny, ny + dy[fx]); 
	}
	return 0;
}