#include int type; int m, n; char crops[500][500]; char field[500][500]; int zone_size[50]; int zones = 1; int max_zone = 0, max_i, max_j, max_c; int di[5] = {-1, 0, 1, 0}, dj[5] = {0, 1, 0, -1}; int vi, vj; void mark_zone(int i, int j, char c) { crops[i][j] = crops[i][j] - 'a' + 'A'; zone_size[zones]++; field[i][j] = zones; for (int k=0; k<4; ++k) { vi = i + di[k]; vj = j + dj[k]; if (crops[vi][vj] == c) mark_zone(vi, vj, c); } } void largest() { for (int i=1; i= 'a') { mark_zone(i,j, crops[i][j]); if (zone_size[zones] > max_zone) max_zone = zone_size[zones]; zones++; } } void new_size(int i, int j) { int s, ki, kj, li, lj; for (int k=0; k<4; ++k) { s = 1; ki = i+di[k]; kj = j+dj[k]; s += zone_size[field[ki][kj]]; for (int l=0; l<4; ++l) { li = i+di[l]; lj = j+dj[l]; if (l==k || field[li][lj] == field[ki][kj]) continue; if (crops[ki][kj] == crops[li][lj]) s += zone_size[field[li][lj]]; } if (s > max_zone) { max_zone = s; max_i = i; max_j = j; max_c = crops[ki][kj] - 'A' + 'a'; } } } void enlarge() { largest(); for (int i=1; i<=m; ++i) for (int j=1; j<=n; ++j) { new_size(i, j); } } int main () { freopen("date.in", "rt", stdin); scanf("%d\n", &type); scanf("%d %d", &m, &n); for (int i=1; i<=m; ++i) { scanf("\n"); for (int j=1; j<=n; ++j) scanf("%c", &crops[i][j]); } if (type == 1) { largest(); printf("%d", max_zone); } else { enlarge(); printf("%d %d\n", max_i, max_j); printf("%c", max_c); } return 0; }