/* ID: zhangzz4 PROG: castle LANG: C++ */ #include<stdio.h> #include<string.h> const int N=55*2; int sz[N*N],nn; int map[N][N]; void dfs(int x,int y) { if(map[x][y]) return ; map[x][y]=nn; sz[nn]++; if(!map[x-1][y]) dfs(x-2,y); if(!map[x+1][y]) dfs(x+2,y); if(!map[x][y-1]) dfs(x,y-2); if(!map[x][y+1]) dfs(x,y+2); } int p,q,f=-1; void deal(int a,int b,int c) { if(f==-1) { p=a,q=b,f=c; return ; } int s1=f==1?2*p:2*p+1, s2=c==1?2*a:2*a+1, w1=f==1?2*q+1:2*q, w2=c==1?2*b+1:2*b; if(w2>w1) return ; if(w2==w1&&s2<s1) return ; p=a,q=b,f=c; } int main() { freopen("castle.in","r",stdin); freopen("castle.out","w",stdout); int n,m,d; memset(map,0,sizeof(map)); scanf("%d%d",&m,&n); for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) { scanf("%d",&d); if(d&1) map[i*2][j*2-1]='*'; if(d&2) map[i*2-1][j*2]='*'; if(d&4) map[i*2][j*2+1]='*'; if(d&8) map[i*2+1][j*2]='*'; } for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) if(map[i<<1][j<<1]==0) { nn++; dfs(i*2,j*2); } printf("%d/n",nn); int max=0; for(int i=1;i<=nn;i++) if(max<sz[i]) max=sz[i]; printf("%d/n",max); int maxi=0; for(int i=1;i<=n;i++) for(int j=1;j<m;j++) if(map[i*2][j*2+1]=='*'&&map[i*2][j*2]!=map[i*2][j*2+2]) if(maxi<sz[map[i*2][j*2]]+sz[map[i*2][j*2+2]]) maxi=sz[map[i*2][j*2]]+sz[map[i*2][j*2+2]]; for(int i=1;i<=n-1;i++) for(int j=1;j<=m;j++) if(map[i*2+1][j*2]=='*'&&map[i*2][j*2]!=map[i*2+2][j*2]) if(maxi<sz[map[i*2][j*2]]+sz[map[i*2+2][j*2]]) maxi=sz[map[i*2][j*2]]+sz[map[i*2+2][j*2]]; printf("%d/n",maxi); for(int i=1;i<=n;i++) for(int j=1;j<m;j++) if(map[i*2][j*2+1]=='*'&&map[i*2][j*2]!=map[i*2][j*2+2]) if(maxi==sz[map[i*2][j*2]]+sz[map[i*2][j*2+2]]) deal(i,j,1); for(int i=1;i<=n-1;i++) for(int j=1;j<=m;j++) if(map[i*2+1][j*2]=='*'&&map[i*2][j*2]!=map[i*2+2][j*2]) if(maxi==sz[map[i*2][j*2]]+sz[map[i*2+2][j*2]]) deal(i,j,2); printf("%d %d ",f==1?p:p+1,q); puts(f==1?"E":"N"); scanf("%'d"); }