#include #include #include using namespace std; int TYPE,N,M,nrt; char c[405][405]; int dx[5]={0, 0,1,-1}, dy[5]={1,-1,0, 0}; int used[405][405]; int quant[405*405+100]; int care[405][405]; int cnt; void Fill(int x,int y,int k) { used[x][y] = k; cnt++; int _x,_y; for(int i = 0; i <= 3; ++i) { _x = x + dx[i]; _y = y + dy[i]; if(used[_x][_y] != k && c[x][y] == c[_x][_y]) Fill(_x,_y,k); } } void Read() { scanf("%d",&TYPE); scanf("%d%d",&N,&M); for(int i = 0; i <= M + 1; ++i) c[0][i] = c[N+1][i] = '#'; for(int i = 1; i <= N; ++i) { scanf("%s",c[i]+1); c[i][0] = '#'; c[i][M+1] = '#'; } } int maxi = 0; void solve1() { for(int i = 1; i <= N; ++i) for(int j = 1; j <= M; ++j) if(used[i][j] != 1) { cnt = 0; ++nrt; Fill(i,j,nrt); quant[nrt] = cnt; if(cnt > maxi) maxi = cnt; } } int usd[405*405+100]; void solve2() { int _i,_j,crt,bestus = 0; int besti,bestj,nn = 0; char bestc; for(int i = 1; i <= N; ++i) for(int j = 1; j <= M; ++j) { char vechi = c[i][j]; for(char nou = 'a'; nou <= 'z'; ++nou) { ++nn; crt = 1; c[i][j] = nou; for(int ii = 0; ii <= 3; ++ii) { _i = i + dx[ii]; _j = j + dy[ii]; if(c[i][j] == c[_i][_j] && usd[used[_i][_j]] != nn) { usd[used[_i][_j]] = nn; crt += quant[used[_i][_j]]; if(vechi == c[_i][_j]) /// era tot din asta --crt; /// il scoatem pe ala gata numarat } } if(bestus < crt) { bestus = crt; bestc = c[i][j]; besti = i; bestj = j; } } c[i][j] = vechi; } printf("%d %d\n%c\n",besti,bestj,bestc); } int main() { ///freopen("pharm.in","r",stdin); Read(); solve1(); if(TYPE == 1) { printf("%d\n",maxi); return 0; } solve2(); return 0; }