#include <stdio.h>
#include <stdlib.h>
int m,n;
int now = 0;
char ch,ch2;
char Map[30][30];
int DFS(int x,int y)
{
Map[x][y] = ch2;
now++;
if(x-1 >= 0)
if(Map[x-1][y]==ch)
DFS(x-1,y);
if(x+1 < n)
if(Map[x+1][y]==ch)
DFS(x+1,y);
if(y-1 >= 0)
if(Map[x][y-1]==ch)
DFS(x,y-1);
if(y+1 < m)
if(Map[x][y+1]==ch)
DFS(x,y+1);
if(y==n-1)
if(Map[x][0]==ch)
DFS(x,0);
if(y==0)
if(Map[x][n-1]==ch)
DFS(x,n-1);
return now;
}
int main()
{
int x,y;
int i,j;
int r;
int max = 0;
int find = 0;
while(scanf("%d %d",&m
,&n
)==2) {
for(i=0;i<m;i++)
ch = Map[x][y];
for(i=0;i < m;i++)
for(j=0;j < n;j++)
if(Map[i][j]!=ch)
{
find = 1;
ch2 = Map[i][j];
break;
}
if(find==0)
ch2 = !ch;
DFS(x,y);
for(i=0;i < m;i++)
for(j=0;j < n;j++)
{
if(Map[i][j]== ch)
{
now = 0;
r = DFS(i,j);
if(r > max)
max = r;
}
}
for(i=0;i<m;i++)
for(j=0;j<n;j++)
Map[i][j] = 0;
max = 0;
find = 0;
}
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KaW50IG0sbjsKaW50IG5vdyA9IDA7CmNoYXIgY2gsY2gyOwpjaGFyIE1hcFszMF1bMzBdOwoKaW50IERGUyhpbnQgeCxpbnQgeSkKewogICBNYXBbeF1beV0gPSBjaDI7CiAgIG5vdysrOwogICBpZih4LTEgPj0gMCkKICAgICAgaWYoTWFwW3gtMV1beV09PWNoKQogICAgICAgICBERlMoeC0xLHkpOwogICBpZih4KzEgPCBuKQogICAgICBpZihNYXBbeCsxXVt5XT09Y2gpCiAgICAgICAgIERGUyh4KzEseSk7CiAgIGlmKHktMSA+PSAwKQogICAgICBpZihNYXBbeF1beS0xXT09Y2gpCiAgICAgICAgIERGUyh4LHktMSk7CiAgIGlmKHkrMSA8IG0pCiAgICAgIGlmKE1hcFt4XVt5KzFdPT1jaCkKICAgICAgICAgREZTKHgseSsxKTsKICAgaWYoeT09bi0xKQogICAgICBpZihNYXBbeF1bMF09PWNoKQogICAgICAgICBERlMoeCwwKTsKICAgaWYoeT09MCkKICAgICAgaWYoTWFwW3hdW24tMV09PWNoKQogICAgICAgICBERlMoeCxuLTEpOwogICByZXR1cm4gbm93Owp9CmludCBtYWluKCkKewogIGludCB4LHk7CiAgaW50IGksajsKICBpbnQgcjsKICBpbnQgbWF4ID0gMDsKICBpbnQgZmluZCA9IDA7CiAgd2hpbGUoc2NhbmYoIiVkICVkIiwmbSwmbik9PTIpCiAgewogICAgIGZvcihpPTA7aTxtO2krKykKICAgICAgICBzY2FuZigiJXMiLE1hcFtpXSk7CiAgICAgc2NhbmYoIiVkICVkIiwmeCwmeSk7CiAgICAgY2ggPSBNYXBbeF1beV07CiAgICAgZm9yKGk9MDtpIDwgbTtpKyspCiAgICAgICAgZm9yKGo9MDtqIDwgbjtqKyspCiAgICAgICAgICAgaWYoTWFwW2ldW2pdIT1jaCkKICAgICAgICAgICB7CiAgICAgICAgICAgICAgZmluZCA9IDE7CiAgICAgICAgICAgICAgY2gyID0gTWFwW2ldW2pdOwogICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgIH0KICAgICBpZihmaW5kPT0wKQogICAgICAgY2gyID0gIWNoOwogICAgIERGUyh4LHkpOwogICAgIGZvcihpPTA7aSA8IG07aSsrKQogICAgICAgIGZvcihqPTA7aiA8IG47aisrKQogICAgICAgIHsKICAgICAgICAgICBpZihNYXBbaV1bal09PSBjaCkKICAgICAgICAgICB7CiAgICAgICAgICAgICAgbm93ID0gMDsKICAgICAgICAgICAgICByID0gREZTKGksaik7CiAgICAgICAgICAgICAgaWYociA+IG1heCkKICAgICAgICAgICAgICAgIG1heCA9IHI7CiAgICAgICAgICAgfQogICAgICAgIH0KICAgICBwcmludGYoIiVkXG4iLG1heCk7CiAgICAgZm9yKGk9MDtpPG07aSsrKQogICAgICAgIGZvcihqPTA7ajxuO2orKykKICAgICAgICAgICBNYXBbaV1bal0gPSAwOwogICAgIG1heCA9IDA7CiAgICAgZmluZCA9IDA7CiAgfQogIHJldHVybiAwOwp9Cg==