#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
char c[205][205];
bool v[215][215][5];
ll minx,miny,maxx,maxy,f;

string query(string res)
{
	cout<<res<<"\n";
	string w;
	cin>>w;
	return w;
}

ll get(string f)
{
	if(f=="E")
		return 0;
	else if(f=="W")
		return 1;
	else if(f=="S")
		return 2;
	else
		return 3;
}

void dfs(ll x,ll y,string f)
{
	minx=min(x,minx),miny=min(y,miny);
	maxx=max(x,maxx),maxy=max(y,maxy);
	if(!v[x][y][get(f)])
	{
		v[x][y][get(f)]=1;
		string q=query("GO");
		ll nx=x,ny=y;
		ll s=get(f);
		if(s==0)
			ny=y+1;
		else if(s==1)
			ny=y-1;
		else if(s==2)
			nx=x+1;
		else
			nx=x-1;
		minx=min(nx,minx),miny=min(ny,miny);
		maxx=max(nx,maxx),maxy=max(ny,maxy);
		if(q=="SUCC")
		{
			c[nx][ny]='.';
			dfs(nx,ny,f);
		}
		else
		{
			c[nx][ny]='#';
			dfs(x,y,query("LEFT"));
		}
	}
	else
	{
		bool flag=false;
		for(int i=0;i<=3;i++)
			if(!v[x][y][i])
			{
				flag=true;
				break;
			}
		if(flag)
			dfs(x,y,query("LEFT"));
	}
}

int main()
{
	minx=miny=maxx=maxy=100;
	c[100][100]='.';
	dfs(100,100,query("LEFT"));
	cout<<"END\n";
	for(int i=minx;i<=maxx;i++)
	{
		for(int j=miny;j<=maxy;j++)
		{
			if(c[i][j]=='\0'||c[i][j]=='#')
				cout<<"#";
			else
				cout<<".";
		}
		cout<<"\n";
	}
	return 0;
}