#include<iostream>
#include<cstring>
using namespace std;
int n,m,cnt,ans,maxx = -(1<<30),ans_x,ans_y;
char ans_w;
bool mp[155][155][5];
bool vis[155][155];
int k[155][155];
int K[1255];
int xx[] = {-1,1,0,0};
int yy[] = {0,0,-1,1};
inline int read() {
int x=0,f=1;char ch=getchar();
while (ch<'0'||ch>'9'){if (ch=='-') f=-1;ch=getchar();}
while (ch>='0'&&ch<='9'){x=x*10+ch-48;ch=getchar();}
return x*f;
}
int sum(int x,int y){
k[x][y] = cnt;
int ret = 0;
vis[x][y] = 1;
ret ++;
if(!mp[x][y][0] && !vis[x][y-1] && x>=1 && x<=n && y-1>=1 && y-1<=m) ret += sum(x,y-1);
if(!mp[x][y][1] && !vis[x-1][y] && x-1>=1 && x-1<=n && y>=1 && y<=m) ret += sum(x-1,y);
if(!mp[x][y][2] && !vis[x][y+1] && x>=1 && x<=n && y+1>=1 && y+1<=m) ret += sum(x,y+1);
if(!mp[x][y][3] && !vis[x+1][y] && x+1>=1 && x+1<=n && y>=1 && y<=m) ret += sum(x+1,y);
return ret;
}
int main(){
cin >> m >> n;
for(int i=1 ; i<=n ; i++){
for(int j=1,x ; j<=m ; j++){
cin >> x;
if(x&1) mp[i][j][0] = 1;
if(x&2) mp[i][j][1] = 1;
if(x&4) mp[i][j][2] = 1;
if(x&8) mp[i][j][3] = 1;
}
}
memset(vis,0,sizeof vis);
for(int i=1 ; i<=n ; i++){
for(int j=1 ; j<=m ; j++){
if(!vis[i][j]) K[++cnt] = sum(i,j);
maxx = max(maxx,K[cnt]);
}
}
cout << cnt << endl << maxx << endl;
for(int i=n ; i>=1 ; i--)
for(int j=1 ; j<=m ; j++){
if(i != 1 && mp[i][j][1] == 1 && k[i][j] != k[i-1][j]){
if(ans < K[k[i][j]] + K[k[i-1][j]]){
ans = K[k[i][j]] + K[k[i-1][j]];
ans_x = i;
ans_y = j;
ans_w = 'N';
}
}
if(j != m && mp[i][j][2] == 1 && k[i][j] != k[i][j+1]){
if(ans < K[k[i][j]] + K[k[i][j+1]]){
ans = K[k[i][j]] + K[k[i][j+1]];
ans_x = i;
ans_y = j;
ans_w = 'E';
}
}
}
cout << ans << endl << ans_x << ' ' << ans_y << ' ' << ans_w;
return 0;
}