#include <bits/stdc++.h>
using namespace std;
char mp[305][305];
int dx[]={-1,0,1,0};
int dy[]={0,1,0,-1};
void dfs(int x,int y,int f){
	mp[x][y]='.';
	for (int i=0;i<4;i++){
		cout<<"GO"<<endl;
		string fb;
		cin>>fb;
		if(fb=="FAIL") {
			mp[x+dx[f]][y+dy[f]]='#';
			cout<<"RIGHT"<<endl;
			cin>>fb;
			f++;
			f%=4;
			continue;
		}
		dfs(x+dx[f],y+dy[f],f);
		cout<<"RIGHT"<<endl;
		string fb2;
		cin>>fb2;
		f++;
		f%=4;
	}
	string fb;
	cout<<"LEFT"<<endl;
	cin>>fb;
	f--;
	f%=4;
	cout<<"LEFT"<<endl;
	f--;
	f%=4;
	cin>>fb;
	cout<<"GO"<<endl;
	cin>>fb;
	if(fb=="SUCC") mp[x+dx[f]][y+dy[f]]='.';
	return;
}
int l[205];
int r[205];
int main(){
	ios::sync_with_stdio(false);
	cin.tie(0);cout.tie(0);
	memset(mp,'U',sizeof(mp));
	cout<<"LEFT"<<endl;
	char ch;
	cin>>ch;
	int f;
	if(ch=='N') f=0;
	if(ch=='E') f=1;
	if(ch=='S') f=2;
	if(ch=='W') f=3;
	dfs(100,100,f);
	cout<<"END"<<endl;
	for (int i=1;i<=200;i++){
		l[i]=INT_MAX;
		r[i]=INT_MIN;
		for (int j=1;j<=200;j++){
			if(mp[i][j]!='U') r[i]=j;
			if(mp[i][j]!='U'&&l[i]==INT_MAX) l[i]=j;
		}
	}
	int le=*min_element(l+1,l+200+1);
	int ri=*max_element(r+1,r+200+1);
	int line1=-1,line2;
	for (int i=1;i<=200;i++){
		if(r[i]!=INT_MIN) line2=i;
		if(r[i]!=INT_MIN&&line1==-1) line1=i;
	}
	cout<<line2-line1+1<<" "<<ri-le+1<<endl;
	for (int i=line1;i<=line2;i++){
		for (int j=le;j<=ri;j++){
			if(mp[i][j]=='U')cout<<'#';
			else cout<<mp[i][j];
		}
			
		cout<<endl;
	}
	return 0;
}