#include <iostream>

using namespace std;

const int NMAX = 400 + 1;

int n, m, zona;
int tip;
int dx[] = { 0, 1, 0, -1};
int dy[] = {-1, 0, 1,  0};
int nr[NMAX * NMAX];
bool c[NMAX * NMAX];
char v[NMAX][NMAX];
int b[NMAX][NMAX];


void citeste() {
    cin >> tip;
    cin >> n >> m;
    for (int i = 1; i <= n; i++)
        for (int j = 1; j <= m; j++)
            cin >> v[i][j];
}

void fill(int x, int y) {
    b[x][y] = zona;
    nr[zona]++;
    for (int i = 0; i < 4; i++) {
        if (!b[x + dx[i]][y + dy[i]] && v[x][y] == v[x + dx[i]][y + dy[i]])
        fill(x + dx[i], y + dy[i]);
    }

}

void rezolva() {
    int maxim = -1;
    char x;
    int sol = -1, soli, solj,l = 0, s = 0;
    for (int i = 1; i <= n; i++)
        for (int j = 1; j <= m; j++)
            if (!b[i][j]) {
                zona++;
                fill(i, j);
                maxim = max(maxim, nr[zona]);
            }
    for (int i = 1; i <= n; i++)
        for (int j = 1; j <= m; j++) {
            char a = v[i][j];
            for (int k = 0; k < 4; k++) {
                v[i][j] = v[i + dx[k]][j + dy[k]];
                for (l = 0, s = 0; l < 4; l++) {
                    if (!c[b[i + dx[l]][j + dy[l]]] && v[i][j] == v[i + dx[l]][j + dy[l]]) {
                        c[b[i + dx[l]][j + dy[l]]] = 1;
                        s += nr[b[i + dx[l]][j + dy[l]]];
                    }
                }
                if(c[b[i][j]] == 0) s++;
                if(s > sol) {
                    sol = s;
                    x = v[i][j];
                    soli = i;
                    solj = j;
                }
                for(l = 0; l < 4; l++) {
                    c[b[i + dx[l]][j + dy[l]]] = 0;
                }
            }
            v[i][j] = a;
        }
    if (tip == 1) cout << maxim;
    else cout << soli << ' ' << solj << '\n' << x;
    cout << '\n';
}

int main() {
    citeste();
    rezolva();
    return 0;
}