#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#define Max 52

using namespace std;

int data[Max][Max];
int vis[Max][Max];
int a,b,count=0;
int sum=0,tmp=0;
struct mod{
    int e,w,n,s;
}pas[Max][Max];
void sign(){
	int i,j;
    for(i=1;i<=a;i++)
		for(j=1;j<=b;j++){
		    if(!(data[i][j]&1))
				pas[i][j].w=1;
			if(!(data[i][j]&4))
				pas[i][j].e=1;
			if(!(data[i][j]&2))
				pas[i][j].n=1;
			if(!(data[i][j]&8))
				pas[i][j].s=1;
		}
}
void dfs(int x,int y){
    if(!x||!y||x==a+1||y==b+1||vis[x][y])
		return ;
	//int der[4][2] = {{0,1},{0,-1},{-1,0},{1,0}};
    vis[x][y]=1;
	tmp++;
	if(pas[x][y].w)
		dfs(x,y-1);
	if(pas[x][y].e)
		dfs(x,y+1);
	if(pas[x][y].n)
		dfs(x-1,y);
	if(pas[x][y].s)
		dfs(x+1,y);
}
int main(){
	int i,j;
    cin>>a>>b;
	for(i=1;i<=a;i++)
		for(j=1;j<=b;j++)
			scanf("%d",&data[i][j]);
	sign();
    for(i=1;i<=a;i++)
		for(j=1;j<=b;j++){
			//printf("aa");
		    if(vis[i][j])
				continue;
			//printf("bb");
			count++;
			dfs(i,j);
			if(tmp>sum)
				sum=tmp;
			tmp=0;
		}
	cout<<count<<endl<<sum<<endl;
    return 0;
}