#include #define isok nx >= 0 && ny >= 0 && v[nx][ny] const int d[4][2] = { {-1, 0}, { 1, 0}, { 0, -1}, { 0, +1} }; char v[405][405]; int us[405][405], filln = 1; int fill(int x, int y){ int ans = 1; us[x][y] = filln; for(int i = 0; i < 4; i++){ int nx = x + d[i][0], ny = y + d[i][1]; if(nx >= 0 && ny >= 0 && v[nx][ny] == v[x][y] && us[nx][ny] < filln) ans += fill(nx, ny); } return ans; } int main(void){ #ifndef ONLINE_JUDGE freopen("ferma1.in", "r", stdin); freopen("ferma1.out", "w", stdout); #endif int t, m, n; scanf("%d%d%d ", &t, &m, &n); for(int i = 0; i < m; i++) scanf("%s ", v+i); int best = 0, bestx, besty; char bestc; for(int x = 0; x < m; x++) for(int y = 0; y < n; y++){ char bak = v[x][y]; for(int k = 0; k < (t == 2 ? 4 : 1); k++){ int nx = x + d[k][0], ny = y + d[k][1]; if(t == 2 && nx >= 0 && ny >= 0 && v[nx][ny]) v[x][y] = v[nx][ny]; if(v[x][y] == bak && k) continue; int cur = fill(x, y); filln += t == 2; if(cur > best) best = cur, bestx = x, besty = y, bestc = v[x][y]; } v[x][y] = bak; } if(t == 1) printf("%d\n", best); else printf("%d %d\n%c\n", bestx + 1, besty + 1, bestc); return 0; }