#include <iostream> #include <fstream> using namespace std; ifstream fin("pharm.in"); int dl[]={-1,0,1,0},dc[]={0,1,0,-1}; char a[401][401],sc; int type,n,m,vmax,nrp,ceL,ceC,cl,cc; struct vect{int nr; bool ok;} v[401*401]; int b[401][401]; struct coada{short int l,c;} co[401*401]; void lee(int l,int c,int parte) { int inc=1,sf=1,i; co[1].l=l; co[1].c=c; b[l][c]=parte; while(inc<=sf) { l=co[inc].l; c=co[inc].c; for(i=0;i<=3;i++) { cl=l+dl[i]; cc=c+dc[i]; if((cl>=0 && cl<n && cc>=0 && cc<m) && a[l][c]==a[cl][cc] && b[cl][cc]==0) { b[cl][cc]=parte; co[++sf].l=cl; co[sf].c=cc; } } inc++; } v[parte].nr=sf; if(sf>vmax) vmax=sf; } void task1() { for(int i=0;i<n;i++) for(int j=0;j<m;j++) if(b[i][j]==0) lee(i,j,++nrp); cout<<vmax<<'\n'; } void task2() { for(int i=0;i<n;i++) for(int j=0;j<m;j++) if(b[i][j]==0) lee(i,j,++nrp); int sum[30]; for(int i=0;i<30;i++) sum[i]=0; for(int i=0;i<n;i++) for(int j=0;j<m;j++) { for(int y=0;y<=3;y++) { cl=i+dl[y]; cc=j+dc[y]; if(cl>=0 && cl<n && cc>=0 && cc<m && b[i][j]!=b[cl][cc] && v[b[cl][cc]].ok==0) sum[a[cl][cc]-'a']+=v[b[cl][cc]].nr,v[b[cl][cc]].ok=1; } for(int y=0;y<=3;y++) { cl=i+dl[y]; cc=j+dc[y]; if(cl>=0 && cl<n && cc>=0 && cc<m && sum[a[cl][cc]-'a']!=0) { if(sum[a[cl][cc]-'a']+1>vmax) vmax=sum[a[cl][cc]-'a']+1,ceL=i,ceC=j,sc=a[cl][cc]; else if(sum[a[cl][cc]-'a']+1==vmax && (ceL>i || (ceL==i && ceC>j))) ceL=i,ceC=j,sc=a[cl][cc]; sum[a[cl][cc]-'a']=0; v[b[cl][cc]].ok=0; } } } cout<<ceL+1<<' '<<ceC+1<<'\n'<<sc; } int main() { cin>>type; cin>>n>>m; cin.get(); for(int i=0;i<n;i++) cin.getline(a[i],401); if(type==1) task1(); else task2(); return 0; }