#include <iostream> #include <fstream> #include <vector> #include <stack> #include <vector> #include <cctype> #include <set> #include <algorithm> #include <queue> using namespace std; //ifstream fin("1.in"); //ofstream fout("1.out"); const int di[] = {0,0,-1,1}; const int dj[] = {1,-1,0,0}; int regionSize[30]; int n,m; int a[401][401]; int d[401][401]; bool used[401][401]; int c[401][401]; bool inside(int i, int j) { return i >= 1 && i <= n && j >=1 && j <=m; } int sol1; int nr; void dfs(int i, int j, int color) { c[i][j] = color; used[i][j] = true; regionSize[a[i][j]]++; ++nr; if(nr > sol1) { sol1 = nr; //fout<<i<<' ' <<j<<' ' <<sol1<<' '<<'\n'; } for(int k = 0; k<4;k++) { int inou = i + di[k]; int jnou = j + dj[k]; if(inside(inou, jnou) && !used[inou][jnou] && a[i][j] == a[inou][jnou]) dfs(inou, jnou,color); } } int main() { int t; cin>>t; char x; cin>>n>>m; for(int i = 1; i <= n;i ++) for(int j = 1; j <= m ; j ++) { cin>>x; a[i][j] = x-'a'; } int cc = 0; for(int i = 1;i <=n;i++) for(int j =1;j<=m;j++) if(!used[i][j]) { nr = 0; dfs(i,j,++cc); //fout<<i <<' ' <<j<<'\n'; } if(t == 1) { cout<<sol1; return 0; } for(int i =1;i<=n;i++) for(int j=1;j<=m;j++) d[i][j] = regionSize[a[i][j]]; int isol, jsol, colsol, sol = 0; for(int i = 1; i<=n;i++) for(int j =1; j<= m;j++) { if(inside(i-1,j) && inside(i+1,j) && d[i-1][j] + d[i+1][j] > sol && a[i-1][j] == a[i+1][j] && a[i][j] != a[i-1][j] && c[i-1][j] != c[i+1][j]) { sol = d[i-1][j] + d[i+1][j]; isol = i; jsol = j; colsol = a[i-1][j]; } if(inside(i,j-1) && inside(i,j+1) && d[i][j-1] + d[i][j+1] > sol && a[i][j-1] == a[i][j+1] && a[i][j] != a[i][j-1] && c[i][j-1] != c[i][j+1]) { sol = d[i][j-1] + d[i][j+1]; isol = i; jsol = j; colsol = a[i][j-1]; } } cout<<isol<<' '<<jsol<<'\n'<<(char)(colsol + 'a'); return 0; }