#include<bits/stdc++.h> using namespace std; #define int long long int xn=502,xm=502,dn=502,dm=502; string zl,fk; int dx[4]={-1,1,0,0}; int dy[4]={0,0,-1,1}; int a[1005][1005]; void dg(int x,int y,bool f,int fx,int cs,bool go) { if(x==502&&y==502&&go==true) cs++; if(cs==4) { int n=dn-xn+1; int m=dm-xm+1; cout << "END" << endl; cout << n << " " << m << endl; for (int i = xn; i <= dn; i++) { for (int j = xm; j <= dm; j++) { if(a[i][j]==-1) cout<<'#'; else cout<<'.'; } cout << endl; } exit(0); } if(f==true||fx==-1) { zl="LEFT"; fx++; } else { zl="GO"; go=true; x=x+dx[fx]; y=y+dy[fx]; dn=max(dn,x); dm=max(dm,y); xn=min(xn,x); xm=min(xm,y); } cout<<zl<<endl; cin>>fk; if(fk=="FAIL") { f=true; go=true; x=x-dx[fx]; y=y-dy[fx]; a[x][y]=0; a[x+dx[fx]][y+dy[fx]]=-1; } else if(fk=="SUCC") { f=false; go=true; a[x][y]=0; } else if(fk=="N") { go=false; f=false; fx=0; } else if(fk=="S") { go=false; f=false; fx=1; } else if(fk=="W") { go=false; f=false; fx=2; } else if(fk=="E") { go=false; f=false; fx=3; } dg(x,y,f,fx,cs,go); } signed main() { memset(a,-1,sizeof(a)); dg(502,502,0,-1,0,0); return 0; }