#include <cstdio>
#include <bitset>
#include <algorithm>
#include <vector>

#define Nmax 405
#define Qmax 200005

using namespace std;
int TYPE,N,M,nrt;
char c[Nmax][Nmax];
int dx[5]={0, 0,1,-1},
    dy[5]={1,-1,0, 0};
int used[Nmax][Nmax];
int _xx,_yy;

int quant[Qmax];

int cnt;

void Fill(int x,int y)
{
    used[x][y] = nrt;
    cnt++;

    for(int i = 0; i <= 3; ++i)
    {
        _xx = x + dx[i];
        _yy = y + dy[i];
        if(used[_xx][_yy] != nrt && c[x][y] == c[_xx][_yy])
            Fill(_xx,_yy);
    }
}

void Read()
{
    scanf("%d",&TYPE);
    scanf("%d%d",&N,&M);
    for(int i = 0; i <= M + 1; ++i)
        c[0][i] = c[N+1][i] = '#';
    for(int i = 1; i <= N; ++i)
    {
        scanf("%s",c[i]+1);
        c[i][0] = '#';
        c[i][M+1] = '#';
    }
}
int maxi = 0;

void solve1()
{

    for(int i = 1; i <= N; ++i)
        for(int j = 1; j <= M; ++j)
            if(used[i][j] == 0)
            {
                cnt = 0;
                ++nrt;
                Fill(i,j);
                quant[nrt] = cnt;
                if(cnt > maxi)
                    maxi = cnt;
            }
}
int usd[405*405+100];
vector<char> v;
bitset<30> ud;

void solve2()
{
    int _i,_j,crt,bestus = 0;
    int besti,bestj,nn = 0;
    char bestc;

    for(int i = 1; i <= N; ++i)
        for(int j = 1; j <= M; ++j)
        {
            char vechi = c[i][j];
            ud = 0;
            v.clear();
            for(int ii = 0; ii <= 3; ++ii)
                {
                    _i = i + dx[ii];
                    _j = j + dy[ii];
                    if(!ud[c[_i][_j]]&& c[_i][_j] != '#')
                    {
                        v.push_back(c[_i][_j]);
                        ud[c[_i][_j]] = 1;
                    }
                }

            for(int pz = 0; pz < v.size(); ++pz)///char nou = 'a'; nou <= 'z'; ++nou)
            {
                char nou = v[pz];
                ++nn;
                crt = 1;
                c[i][j] = nou;

                for(int ii = 0; ii <= 3; ++ii)
                {
                    _i = i + dx[ii];
                    _j = j + dy[ii];
                    if(c[i][j] == c[_i][_j] && usd[used[_i][_j]] != nn)
                    {
                        usd[used[_i][_j]] = nn;
                        crt += quant[used[_i][_j]];
                        if(vechi == c[_i][_j]) /// era tot din asta
                            --crt; /// il scoatem pe ala gata numarat
                    }
                }
                if(bestus < crt)
                {
                    bestus = crt;
                    bestc = c[i][j];
                    besti = i;
                    bestj = j;
                }
            }
            c[i][j] = vechi;
        }
    printf("%d %d\n%c\n",besti,bestj,bestc);
}

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

    Read();
    solve1();

    if(TYPE == 1)
    {
        printf("%d\n",maxi);
        return 0;
    }
    solve2();

    return 0;
}