#include #include using namespace std; int dx[] = {0, -1, 0, 1, 0}; int dy[] = {0, 0, 1, 0, -1}; int T, N, M, p, pozi, pozj, rez, nrpatrate[401 * 401], vect[30], freq[401][401], mx; char mat[402][402], culoare; void fill(int i, int j, int &nr) { ++nr; freq[i][j] = p; for(int k = 1; k <= 4; k++) { int x = dx[k] + i; int y = dy[k] + j; if(freq[x][y] == 0 && mat[i][j] == mat[x][y]) { fill(x, y, nr); } } } int main() { cin >> T; cin >> N >> M; for(int i = 1; i <= N; i++) { cin >> (mat[i] + 1); } for(int i = 1; i <= N; i++) { for(int j = 1; j <= M; j++) { if(freq[i][j] == 0) { int nr = 0; ++p; fill(i, j, nr); nrpatrate[p] = nr; mx = max(mx, nr); } } } if(T == 1) { cout << mx << '\n'; return 0; } for(int i = 1; i <= N; i++) { for(int j = 1; j <= M; j++) { for(int k = 1; k <= 4; k++) { int x = dx[k] + i; int y = dy[k] + j; if(nrpatrate[freq[x][y]] > 0) { vect[mat[x][y] - 'a' + 1] += nrpatrate[freq[x][y]]; nrpatrate[freq[x][y]] *= -1; if(rez < vect[mat[x][y] - 'a' + 1] + 1) { rez = vect[mat[x][y] - 'a' + 1] + 1; pozi = i; pozj = j; culoare = mat[x][y]; } else { if(rez == vect[mat[x][y] - 'a' + 1] + 1 && (culoare > mat[x][y])) { pozi = i; pozj = j; culoare = mat[x][y]; } } } } for(int k = 1; k <= 4; k++) { int x = dx[k] + i; int y = dy[k] + j; if(nrpatrate[freq[x][y]] < 0) { nrpatrate[freq[x][y]] *= -1; vect[mat[x][y] - 'a' + 1] = 0; } } } } cout << pozi << ' ' << pozj << '\n' << culoare << '\n'; return 0; }