#include <bits/stdc++.h>

using namespace std;

const int n = 102, m = 102;

char s[n + 5][n + 5];
bool b[n + 5][n + 5];
int x, y;

bool Go () {
	printf("GO\n");
	fflush(stdout);
	char str[555];
	scanf("%s", str + 1);
	if (str[1] == 'F')
		return false;
	else
		return true;
}
void add (char val) {
	if (val == 'N') {
		x -= 1;
	} else if (val == 'S') {
		x += 1;
	} else if (val == 'W') {
		y -= 1;
	} else {
		y += 1;
	}
}
void sub (char val, int &xxx, int &yyy) {
	if (val == 'N') {
		xxx -= 1;
	} else if (val == 'S') {
		xxx += 1;
	} else if (val == 'W') {
		yyy -= 1;
	} else {
		yyy += 1;
	}
}
char Judge () {
	printf("LEFT\n");
	fflush(stdout);
	char str[5];
	scanf("%s", str + 1);
	return str[1];
}
int main (){
	for (int i = 1; i <= 102; i++) {
		for (int j = 1; j <= 102; j++) {
			if (i == 1 || j == 1 || i == 102 || j == 102) {
				s[i][j] = '#';
			} else {
				s[i][j] = '?';
			}
		}
	}
	memset(b, false, sizeof(b));
	char val;
	x = 2, y = 2;
	b[x][y] = 1;
	s[x][y] = '.';
	while(true) {
		val = Judge();
		while(true){
			while(Go()) {
				int xx = x, yy = y;
				sub(val, xx, yy);
				int id = 0;
				if (!b[xx][yy]){
					add(val);
					b[x][y] = true;
					s[x][y] = '.';
				} else {
					break;
				}
			}
			int id = 0;
			while(true) {
				val = Judge();
				id += 1;
				int xx = x, yy = y;
				sub(val, xx, yy);
				if (Go() && !b[xx][yy]) {
					add(val);
					b[xx][yy] = true;
					s[xx][yy] = '.';
					break;
				}
				if (id == 3) {
					id = -1;
					break;
				}
			}
			if (id == -1) {
				printf("END\n");
				printf("102 102\n");
				for (int i = 1; i <= 102; i++) {
					for (int j = 1; j <= 102; j++) {
						if (s[i][j] == '?') {
							printf("#");
						} else {
							printf("%c", s[i][j]);
						}
					}
					printf("\n");
				}
				return 0;
			}
		}
	}
	return 0;
}