#include const int NMAX = 450; using namespace std; int N,M,type,grupa[NMAX][NMAX],sizegroup[NMAX*NMAX],color[NMAX*NMAX],marime,nrgrupe; bool used[NMAX][NMAX]; int maximm,maximusus,mx,my; char s[NMAX][NMAX],aux[NMAX],colma; int dx[] = {0,1,0,-1}; int dy[] = {1,0,-1,0}; void filly(int x, int y, char color) { marime++; grupa[x][y] = nrgrupe; for (int i = 0; i < 4; ++i) { int newx = x + dx[i]; int newy = y + dy[i]; if (newx < 1 || newx > N) continue; if (newy < 1 || newy > M) continue; if (s[newx][newy] == color && !grupa[newx][newy]) filly(newx,newy,color); } } int main() { cin >> type; cin >> N >> M; cin.getline(aux,123); for (int i = 1; i <= N; ++i) { cin.getline(s[i]+1,430); } for (int i = 1; i <= N; ++i) { for (int j = 1; j <= M; ++j) { if (grupa[i][j] == 0) { marime = 0; nrgrupe++; filly(i,j,s[i][j]); sizegroup[nrgrupe] = marime; if (marime > maximm) { maximm = marime; } } } } if (type == 1) { cout << maximm; return 0; } for (int i = 1; i <= N; ++i) { for (int j = 1; j <= M; ++j) { for (int k = 0; k < 4; ++k) { int newx1 = i + dx[k]; int newy1 = j + dy[k]; if (newx1 < 1 || newx1 > N) continue; if (newy1 < 1 || newy1 > M) continue; char poscol = s[newx1][newy1]; int candy = 1; for (int kk = 0; kk < 4; ++kk) { int newx2 = i + dx[kk]; int newy2 = j + dy[kk]; if (newx2 < 1 || newx2 > N) continue; if (newy2 < 1 || newy2 > M) continue; if (s[i][j] == poscol) continue; if (s[newx2][newy2] == poscol) { candy += sizegroup[ grupa[newx2][newy2] ]; } } if (candy > maximusus) { maximusus = candy; mx = i; my = j; colma = poscol; } } } } cout << mx << " " << my << '\n'; cout << colma; return 0; }