1 #include <bits/stdc++.h>
2 using namespace std;
3 const int MAXN=60;
4 int color[MAXN][MAXN];
5 int room[MAXN][MAXN];
6 int R,C,ansNum,anscolor;
7 void dfs(int i,int j) {
8 if(color[i][j])return;
9 ++ansNum;
10 color[i][j]=anscolor;
11 if((room[i][j]&1)==0)dfs(i,j-1);
12 if((room[i][j]&2)==0)dfs(i-1,j);
13 if((room[i][j]&4)==0)dfs(i,j+1);
14 if((room[i][j]&8)==0)dfs(i+1,j);
15 }
16
17 int main() {
18 cin>>R>>C;
19 for(int i=0; i<R; i++) {
20 for(int j=0; j<C; j++) {
21 cin>>room[i][j];
22 }
23 }
24 memset(color,0,sizeof(color));
25 anscolor=0;
26 int res=0; ansNum=0;
27 for(int i=0; i<R; i++) {
28 for(int j=0; j<C; j++) {
29 if(!color[i][j]) {
30 ansNum=0;
31 anscolor++;
32 dfs(i,j);
33 res=max(ansNum,res);
34 }
35 }
36 }
37 cout<<anscolor<<endl;
38 cout<<res<<endl;
39 return 0;
40 }