#include<bits/stdc++.h>

using namespace std;

// GO per cell : leq 5

map<char,array<int,2>> D;

void init(){
	D['N']={-1,0};
	D['S']={1,0};
	D['W']={0,-1};
	D['E']={0,1};
} 

const int N = 100+5;

char mp[2*N][2*N];
bool vis[2*N][2*N];
int n;
char dir;
char s[6];

void dfs(int x,int y){
	for(int k=0;k<4;k++){
		printf("rb:%d,%d turn:%c\n",x,y,dir);
		printf("LEFT\n");fflush(stdout);
		scanf("%s",s);
		dir=s[0];
		int nx=x+D[dir][0];
		int ny=y+D[dir][1];
		if(vis[nx][ny])
			continue;
		printf("GO\n");fflush(stdout);
		vis[nx][ny]=1;
		scanf("%s",s);
		if(s[0]=='S') // success
			mp[nx][ny]='.',dfs(nx,ny);
		else // fail
			mp[nx][ny]='#';
	}
	if(x==N&&y==N) return;
	printf("LEFT\n");fflush(stdout);scanf("%s",s);
	printf("LEFT\n");fflush(stdout);scanf("%s",s);
	printf("GO\n");fflush(stdout);scanf("%s",s);
	printf("LEFT\n");fflush(stdout);scanf("%s",s);
	printf("LEFT\n");fflush(stdout);scanf("%s",s);
	dir=s[0];
}

int main(){
	init();
	mp[N][N]='.',vis[N][N]=1;
	dfs(N,N);
	printf("END\n");
	int t=N,b=N,l=N,r=N;
	for(int i=1;i<=2*N;i++)
		for(int j=1;j<=2*N;j++)
			if(vis[i][j])
				t=min(t,i),b=max(b,i),
				l=min(l,j),r=max(r,j);
	printf("%d %d\n",b-t+1,r-l+1);
	for(int i=t;i<=b;i++)
		for(int j=l;j<=r;j++)
			if(!mp[i][j])
				mp[i][j]='#';
	for(int i=t;i<=b;i++)
		printf("%s\n",mp[i]+l);
	fflush(stdout);
}