#include<bits/stdc++.h>
using namespace std;
char arr[500][500],dir;
string backs,ds="ENWS";
int imax=255,imay=255,cnt=4,n=500,m=500; 
bool vis[500][500],fx[500],fy[500];   
int gx(){
	if(dir=='E')return imax+1;
	else if(dir=='W')return imax-1;
	else return imax;
}
int gy(){
	if(dir=='S')return imay+1;
	else if(dir=='N')return imay-1;
	else return imay;
}
void fail(){
	for(int i=0;i<3;i++){
		if(!vis[gx()][gy()])arr[gx()][gy()]='#';
		cout<<"LEFT";
		cin>>backs; 
		dir=ds[(ds.find(dir)+1)%4];
	}
}
void succ(){
	arr[gx()][gy()]='.';
	imax=gx();
	imay=gy();
}
int main(){
	while(backs!="E"){
		cout<<"LEFT";
		cin>>backs;  
	}
	dir='E';
	arr[imax][imay]='.';
	while(cnt--){
		vis[imax][imay]=1;
		char tdir=dir;
		dir=ds[(ds.find(dir)+1)%4];
		if(vis[gx()][gy()])fail();
		dir=tdir;
		cout<<"go";
		cin>>backs;
		if(backs=="FAIL")fail();
		else succ();
	}
	for(int i=1;i<=500;i++){
		bool fa=1;
		bool fb=1;
		for(int j=1;j<=500;j++){
			if(arr[i][j]=='.')fa=0;
			if(arr[j][i]=='.')fb=0;
		}
		if(fa){
			fx[i]=1;
			m--;
		}
		if(fb){
			fy[i]=1;
			n--;
		}
	}
	cout<<n<<" "<<m;
	for(int i=1;i<=500;i++){
		if(fx[i])continue;
		for(int j=1;j<=50;j++){
			if(fy[j])continue;
			if(!arr[i][j])arr[i][j]='#';
			cout<<arr[i][j];
		}
		cout<<"\n";
	}
	return 0;
}