#include <iostream>
#include <utility>
#include <string>
#include <vector>
#include <queue>
using namespace std;

int m,n;
vector< string > color;
vector< vector<int> > zone;

int nrzones=0;
vector<int> zone_size(1,0);

int i_dir[] = {1,-1,0, 0};
int j_dir[] = {0, 0,1,-1};

typedef pair<int,int> PII;

bool valid(int i, int j){ return i>0 && i<=m && j>0 && j<=n ; }


void bfs(int i, int j)
{
    queue< PII > q;
    q.push(PII(i,j)); 

    char c=color[i][j];
    int  z=zone[i][j];

    while(!q.empty()){
        int ci=q.front().first;
        int cj=q.front().second;    
        q.pop();

        for(int d=0;d<4;++d){
            int ii=ci+i_dir[d];
            int jj=cj+j_dir[d];

            if(valid(ii,jj) && color[ii][jj]==c && !zone[ii][jj]){
                zone[ii][jj]=z;
                ++zone_size[z];
                q.push(PII(ii,jj));
            }
        }
    }
}


int main()
{
    int type;

    cin>>type>>m>>n;
    color.resize(m+2);
    
    bool problem=false;
    string s;
    getline(cin,s); // '\n' -- probably...
    if(s.size()>=unsigned(n)) problem=true;
    

    color[0]=string(n+2,'#');
    color[m+1]=string(n+2,'#');

    for(int i=1; i<=m; ++i){
        if(!problem) getline(cin,s);
        else problem=false;
        color[i]="#"+s.substr(0,n)+"#";
    }

    zone.resize(m+2,vector<int>(n+2,0));

    for(int i=1; i<=m; ++i)
        for(int j=1; j<=n; ++j)
            if(!zone[i][j]){
                ++nrzones;
                zone[i][j]=nrzones;
                zone_size.push_back(1);
                bfs(i,j);
            }


    if(type==1){
        int max=0;
        for(int i=1;i<(int) zone_size.size();++i) 
            if(zone_size[i]>max) max=zone_size[i];

        cout<<max<<'\n';
    }
    else{
        int max=0,maxi=0,maxj=0;
        char maxc='?';

        for(int i=m;i>0;--i)
            for(int j=n;j>0;--j)   
                for(int d=0;d<4;++d){
                    char nc = color[i+i_dir[d]][j+j_dir[d]];
                    if(nc==color[i][j]) continue;

                    vector<int> nzones(5,0);
                    int nrnz=0;

                    for(int e=0;e<4;++e)
                        if(nc==color[i+i_dir[e]][j+j_dir[e]]){
                            int cz=zone[i+i_dir[e]][j+j_dir[e]];
                            int k=0;
                            while(k<nrnz&&nzones[k]!=cz) ++k;
                            if(k==nrnz) nzones[nrnz++]=cz; 
                        }
                            
                    int curr=0;
                    for(int i=0;i<nrnz;++i) curr+=zone_size[nzones[i]];

                    if(curr>max || (curr==max && !(maxi==i&&maxj==j&&maxc<=nc) ))
                        max=curr, maxi=i, maxj=j, maxc=nc;
                }
             
        cout<<maxi<<' '<<maxj<<'\n'<<maxc<<'\n';
    }
}