#include <iostream>
#include <algorithm>

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]] - (mat[x][y] == mat[i][j]);
          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];
          }
        }
      }
      
      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;
}