#include #define DMAX 405 #define x first #define y second using namespace std; int M[DMAX][DMAX], n, m; int use[DMAX][DMAX]; int c[DMAX][DMAX]; int dx[]= {0, 1, -1, 0}; int dy[]= {1, 0, 0, -1}; int a, b, maxM, color; void replace_m(int x, int y) { for(int i=0; i<4; i++) if(maxM > q; queue > pp; use[x][y]=1; q.push({x, y}); pp.push({x, y}); int cc=0; while(!q.empty()) { pair p = q.front(); q.pop(); cc++; for(int i=0; i<4; i++) if(use[p.x+dx[i]][p.y+dy[i]]==0 && c[p.x][p.y]==c[p.x+dx[i]][p.y+dy[i]]) { q.push({p.x+dx[i],p.y+dy[i]}); pp.push({p.x+dx[i],p.y+dy[i]}); use[p.x+dx[i]][p.y+dy[i]]=1; } } while(!pp.empty()) { pair g = pp.front(); pp.pop(); M[g.x][g.y]=cc; } } void bordeaza() { for(int i=1; i<=m; i++) { use[0][i]=-1; use[n+1][i]=-1; } for(int i=1; i<=n; i++) { use[i][0]=-1; use[i][m+1]=-1; } } int main() { int t; cin.sync_with_stdio(false); cout.sync_with_stdio(false); cin>>t; cin>>n>>m; for(int i=1; i<=n; i++) for(int j=1; j<=m; j++) { char f; cin>>f; c[i][j]=f-'a'; } bordeaza(); for(int i=1; i<=n; i++) for(int j=1; j<=m; j++) if(!use[i][j]) lee(i, j); if(t==1) { for(int i=1; i<=n; i++) for(int j=1; j<=m; j++) if(M[i][j]>maxM) maxM=M[i][j]; cout<