#include <cstdio>
#include <iostream>
#include <fstream>
#include <vector>
#include <list>
#include <map>
#include <set>
#include <queue>
#include <stack>
#include <bitset>
#include <algorithm>
#include <sstream>
#include <iomanip>
#include <cmath>
#include <cstdlib>
#include <ctype.h>
#include <cstring>
#include <string>
#include <ctime>
#include <cassert>
#include <utility>

#define LIM 405

using namespace std;

int ty, n, m, currS;
pair<int, char> mat[LIM][LIM]; // id componenta conexa din care face parte
int v[LIM * LIM];
char c[LIM][LIM];
bool viz[LIM][LIM];
int d[4][2] = {{-1, 0}, {0, +1}, {+1, 0}, {0, -1}};

void dfs(int ins, int jns, int id) {
    viz[ins][jns] = true;
    mat[ins][jns] = make_pair(id, c[ins][jns]);
    currS++;
    for(int i = 0; i < 4; i++) {
        int ni = ins + d[i][0];
        int nj = jns + d[i][1];
        if(ni >= 0 && ni < n && nj >= 0 && nj < m && !viz[ni][nj] && c[ins][jns] == c[ni][nj]) {
            dfs(ni, nj, id);
        }
    }
}

void responseTo2() {
    int mx = -1;
    int idChangei = -1, idChangej = -1;
    char chChange = ' ';
    for(int i = 0; i < n; i++) {
        for(int j = 0; j < m; j++) {
            for(int ch = 0; ch < 26; ch++) {
                char chnew = ch + 'a';
                char chold = c[i][j];
                c[i][j] = chnew;
//                if(i == 0 && j == 2 && ch == 1) {
//                    cout << "k\n";
//                }
                set<int> ss;
                for(int k = 0; k < 4; k++) {
                    int ni = i + d[k][0];
                    int nj = j + d[k][1];
                    int s = 0;
                    if(ni >= 0 && ni < n && nj >= 0 && nj < m && mat[ni][nj].second == c[i][j] && mat[ni][nj].first != mat[i][j].first) {
                        ss.insert(mat[ni][nj].first);
                    }
                    for(set<int>::iterator it = ss.begin(); it != ss.end(); it++) {
                        s += v[*it];
                    }
                    s++;
                    if(mx < s) {
                        idChangei = i;
                        idChangej = j;
                        chChange = chnew;
                        mx = s;
                    }
                }
                c[i][j] = chold;
            }
        }
    }
    printf("%d %d\n", idChangei + 1, idChangej + 1);
    printf("%c\n", chChange);
}

int main() {
//	freopen("date.in", "r", stdin);
//	freopen("date.out","w", stdout);

    scanf("%d\n", &ty);
    scanf("%d %d\n", &n, &m);
    for(int i = 0; i < n; i++) {
        for(int j = 0; j < m; j++) {
            scanf("%c", &c[i][j]);
        }
        scanf("\n");
    }

    int mx = -1;
    int idCC = 1;
    for(int i = 0; i < n; i++) {
        for(int j = 0; j < m; j++) {
            if(!viz[i][j]) {
                currS = 0;
                dfs(i, j, idCC);
                v[idCC] = currS;
                idCC++;
                mx = max(mx, currS);
            }
        }
    }

//    for(int i = 0; i < n; i++) {
//        for(int j = 0; j < m; j++) {
//            cout << mat[i][j].first << mat[i][j].second << " "; // << mat[i][j].second
//        }
//        cout << endl;
//    }

    if(ty == 1) {
        printf("%d\n", mx);
    } else {
        responseTo2();
    }

    return 0;
}