import jdk.internal.util.xml.impl.Input; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.io.PrintWriter; import java.util.*; public class main { public static void main(String[] args) { OutputStream outputStream = System.out; InputStream inputStream = System.in; PrintWriter out = new PrintWriter(outputStream); Scanner in = new Scanner(inputStream); Pharm Solver = new Pharm(); Solver.solve(in,out); out.close(); } } class Pharm{ public int n,m,type; public String[] a; public int[][] zone; public int[] zonedim; public final int[] dl = {1,-1,0,0}; public final int[] dc = {0,0,1,-1}; public int Zone = 0; public class pair{ public int first,second; pair(int first,int second){ this.first = first; this.second = second; } } public void BFS(int i,int j){ ++Zone; int N = 1; Queue Q = new ArrayDeque(); zone[i][j] = Zone; Q.add(new pair(i,j)); while(!Q.isEmpty()){ int ii = Q.peek().first; int jj = Q.peek().second; pair x = Q.remove(); for(int k = 0; k < 4; k++){ int ni = ii + dl[k]; int nj = jj + dc[k]; if(ni < 0 || nj < 0 || ni >= n || nj >= m) continue; if(zone[ni][nj] == 0 && a[ni].charAt(nj) == a[i].charAt(j)) { Q.add(new pair(ni, nj)); zone[ni][nj] = Zone; ++N; } } } zonedim[Zone] = N; } public void solve(Scanner in,PrintWriter out){ type = in.nextInt(); n = in.nextInt(); m = in.nextInt(); a = new String[n+1]; zone = new int[n+1][m+1]; zonedim = new int[n*m+1]; for(int i = 0; i < n; i++) { a[i] = in.next(); } for(int i = 0; i < n; i++) for(int j = 0; j < m; j++) if(zone[i][j] == 0) BFS(i,j); if(type == 1){ int Ans = 0; for(int i = 1; i <= Zone; i++) Ans = Math.max(Ans,zonedim[i]); out.print(Ans); } else { int I = 0, J = 0; char A = 'a'; int Best = 0; for (int i = 0; i < n; i++) for (int j = 0; j < m; j++) for (char c = 'a'; c <= 'z'; c++) { int Curr = 0; if (c == a[i].charAt(j)) { Curr = zonedim[zone[i][j]]; } else { Set S = new HashSet(); for (int k = 0; k < 4; k++) { int ni = i + dl[k]; int nj = j + dc[k]; if (ni > -1 && nj > -1 && ni < n && nj < m) if (a[ni].charAt(nj) == c) S.add(zone[ni][nj]); } for(int it: S) Curr += zonedim[it]; } if (Curr > Best) { Best = Curr; I = i + 1; J = j + 1; A = c; } } out.printf("%d %d\n%c",I,J,A); } } }