#include #include #define NMAX 405 using namespace std; int n, m; char mat[NMAX][NMAX]; int vis[NMAX][NMAX]; int dx[4] = {0, 0, 1, -1}; int dy[4] = {1, -1, 0, 0}; int zona; int marimi[NMAX*NMAX]; bool pus[NMAX*NMAX]; void dfs (int lin, int col) { vis[lin][col] = zona; marimi[zona] ++; int nx, ny; for (int i = 0; i < 4; i++) { nx = lin + dx[i]; ny = col + dy[i]; if (nx >= 1 && ny >= 1 && nx <= n && ny <= m && mat[lin][col] == mat[nx][ny] && !vis[nx][ny]) dfs (nx, ny); } } int main() { int v = 1; cin >> v; cin >> n >> m; cin.get(); for (int i = 1; i <= n; i++) { cin.get(mat[i] + 1, NMAX); cin.get(); } int j, maxim = -1; for (int i = 1; i <= n; i++) for (j = 1; j <= m; j++) if (!vis[i][j]) { zona ++; dfs(i, j); if (marimi[zona] > maxim) maxim = marimi[zona]; } if (v == 1) cout << maxim << '\n'; else { int maxim = -1; int lin, col; char cul; int j, k, nx, ny, l, nx2, ny2, p = 0; for (int i = 1; i <= n; i++) for (j = 1; j <= m; j++) { for (k = 0; k < 4; k++) { nx = i + dx[k]; ny = j + dy[k]; if (nx >= 1 && ny >= 1 && nx <= n && ny <= m) { for (l = 0; l < 4; l++) { nx2 = i + dx[l]; ny2 = j + dy[l]; if (nx2 >= 1 && ny2 >= 1 && nx2 <= n && ny2 <= m && mat[nx][ny] == mat[nx2][ny2] && !pus[vis[nx2][ny2]]) { pus[vis[nx2][ny2]] = 1; p += marimi[vis[nx2][ny2]]; } } if (p > maxim) { maxim = p; lin = i; col = j; cul = mat[nx][ny]; } for (l = 0; l < 4; l++) { nx2 = i + dx[l]; ny2 = j + dy[l]; if (nx2 >= 1 && ny2 >= 1 && nx2 <= n && ny2 <= m && mat[nx][ny] == mat[nx2][ny2] && pus[vis[nx2][ny2]]) { pus[vis[nx2][ny2]] = 0; p -= marimi[vis[nx2][ny2]]; } } } } } cout << lin << ' ' << col << '\n'; cout << cul << '\n'; } return 0; }