/*
탐색 search
1. 순차탐색 2. 이진 탐색 (업다운게임)
정렬이 되어있는 데이터셋에서 반씩 쪼개가면서?
#include <stdio.h>
int arr[50]={1,3,4,5,6,12,15,17,18,30,34,38,57,59,80};
int n=15;
//binary_search
int bs(int s, int e, int k) // arr[s] ~ arr[e] 에서 k값의 위치 리턴 (없다면 -1리턴)
{
int mid = (s+e)/2;
if(s>e) return -1;
printf("s=%d e=%d\n",s,e);
if(arr[mid]==k) return mid;
else if(arr[mid]<k) return bs(mid+1,e,k);
else return bs(s,mid-1,k);
}
int main()
{
int k;
printf("찾고싶은 숫자를 쓰세요 >> ");
scanf("%d",&k);
printf("%d번째에 있습니다!",bs(0,n-1,k)+1);
}
순차탐색 vs 퀵정렬+이진탐색
*/
/*
#include <stdio.h>
int n,arr[1000001]={},m,h;
int bs(int s, int e, int k)
{
int mid=(s+e)/2;
if(s>e) return -2;
if(arr[mid]==k) return mid;
else if(arr[mid]<k) return bs(mid+1,e,k);
else return bs(s,mid-1,k);
}
int main()
{
scanf("%d",&n);
for(int i=0;i<n;i++) scanf("%d",&arr[i]);
scanf("%d",&m);
for(int i=0;i<m;i++){
scanf("%d",&h);
printf("%d ",bs(0,n-1,h)+1);
}
return 0;
}
*/
/*
#include <stdio.h>
int n,arr[100001]={},k;
int bs(int s, int e, int m)
{
int mid=(s+e)/2;
if(s>e) return n;
if(arr[mid]>=m){
while(arr[mid]>=m){
mid--;
}
return mid+1;
}
else if(arr[mid]<m) return bs(mid+1,e,m);
}
int main()
{
scanf("%d",&n);
scanf("%d",&k);
for(int i=0;i<n;i++) scanf("%d",&arr[i]);
printf("%d ",bs(0,n-1,k)+1);
return 0;
}
dfs vs bfs
d depth 깊이 b breadwidth 너비
f first 우선
s search 탐색
*/
/*
#include <stdio.h>
int n,arr[102][102]={},v[102]={};
void dfs(int node)
{
v[node]=1;
for(int i=1;i<=n;i++){
if(v[i]==0&&arr[i][node]==1) dfs(i);
}
return ;
}
int main()
{
int m,a,b,c=0;
scanf("%d",&n);
scanf("%d",&m);
for(int i=1;i<=m;i++){
scanf("%d %d",&a,&b);
arr[a][b]=1;
arr[b][a]=1;
}
dfs(1);
for(int i=2;i<=n;i++){
if(v[i]==1) c++;
}
printf("%d",c);
}
*/
/*
#include <stdio.h>
#include <stdlib.h>
int n,arr[27][27]={},p=0,k=0,c[300]={};
void dfs(int i, int j)
{
if(arr[i][j]!=1) return ;
k++;
arr[i][j]=-1;
dfs(i,j+1);
dfs(i,j-1);
dfs(i+1,j);
dfs(i-1,j);
return ;
}
int compare(int* pa, int* pb)
{
if(*pa>*pb) return 1;
else if(*pa==*pb) return 0;
else return -1;
}
int main()
{
scanf("%d",&n);
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
scanf("%1d",&arr[i][j]);
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++){
if(arr[i][j]==1){
k=0;
dfs(i,j);
c[p]=k;
p++;
}
}
qsort(c,p,sizeof(int),compare);
printf("%d\n",p);
for(int i=0;i<p;i++) printf("%d\n",c[i]);
return 0;
}
easy 4024 2605 4572 4023 hard
*/
/*
#include <stdio.h>
#include <string.h>
int w,h,p=0;
char arr[102][102]={};
void dfs(int i, int j)
{
if(arr[i][j]!='L') return ;
arr[i][j]='.';
dfs(i,j+1);
dfs(i,j-1);
dfs(i+1,j);
dfs(i-1,j);
dfs(i-1,j-1);
dfs(i-1,j+1);
dfs(i+1,j-1);
dfs(i+1,j+1);
return ;
}
int main()
{
char o;
scanf("%d %d",&w,&h);
for(int i=1;i<=h;i++)
for(int j=1;j<=w;j++){
scanf(" ",&o);
scanf("%c",&arr[i][j]);
}
for(int i=1;i<=h;i++)
for(int j=1;j<=w;j++){
if(arr[i][j]=='L'){
dfs(i,j);
p++;
}
}
printf("%d",p);
return 0;
}
*/
/*
#include <stdio.h>
int arr[9][9]={},k=0,p=0;
void dfs(int i, int j,int m)
{
if(arr[i][j]!=m) return ;
k++;
arr[i][j]=-1;
dfs(i,j+1,m);
dfs(i,j-1,m);
dfs(i+1,j,m);
dfs(i-1,j,m);
return ;
}
int main()
{
int m;
for(int i=1;i<=7;i++)
for(int j=1;j<=7;j++)
scanf("%d",&arr[i][j]);
for(int i=1;i<=7;i++)
for(int j=1;j<=7;j++){
m=arr[i][j];
if(m!=-1){
k=0;
dfs(i,j,m);
if(k>=3) p++;
}
}
printf("%d",p);
return 0;
}
*/
/*
#include <stdio.h>
#include <stdlib.h>
int n,m,arr[102][102]={},k,x,y,a,b,s[101]={},p=0;
void dfs(int i,int j)
{
if(arr[i][j]!=0) return ;
k++;
arr[i][j]=-1;
dfs(i,j+1);
dfs(i,j-1);
dfs(i+1,j);
dfs(i-1,j);
return ;
}
int compare(int*pa,int*pb)
{
if(*pa>*pb) return 1;
else if(*pa==*pb) return 0;
else return -1;
}
int main()
{
scanf("%d %d %d",&n,&m,&k);
for(int r=0;r<k;r++){
scanf("%d %d %d %d",&x,&y,&a,&b);
for(int i=y;i<b;i++) for(int j=x;j<a;j++) arr[i+1][j+1]=1;
}
for(int i=0;i<=n+1;i++) arr[i][0]=1;
for(int i=0;i<=n+1;i++) arr[i][m+1]=1;
for(int i=0;i<=m+1;i++) arr[0][i]=1;
for(int i=0;i<=m+1;i++) arr[n+1][i]=1;
for(int i=n;i>0;i--)
for(int j=1;j<=m;j++){
if(arr[i][j]==0){
k=0;
dfs(i,j);
s[p]=k;
p++;
}
}
qsort(s,p,sizeof(int),compare);
printf("%d\n",p);
for(int i=0;i<p;i++) printf("%d ",s[i]);
return 0;
}
*/
#include <stdio.h>
int arr[21][21]={},k=0,p=0,arr1[21][21]={};
void dfs1(int i,int j,int m)
{
if(arr[i][j]!=m) return ;
k++;
arr[i][j]=-1;
if(k>5) return ;
dfs1(i,j+1,m);
dfs1(i,j-1,m);
return ;
}
void dfs2(int i,int j,int m)
{
if(arr[i][j]!=m) return ;
k++;
arr[i][j]=-1;
if(k>5) return ;
dfs2(i+1,j,m);
dfs2(i-1,j,m);
return ;
}
void dfs3(int i,int j,int m)
{
if(arr[i][j]!=m) return ;
k++;
arr[i][j]=-1;
if(k>5) return ;
dfs3(i+1,j+1,m);
dfs3(i-1,j-1,m);
return ;
}
void dfs4(int i,int j,int m)
{
if(arr[i][j]!=m) return ;
k++;
arr[i][j]=-1;
if(k>5) return ;
dfs4(i-1,j+1,m);
dfs4(i+1,j-1,m);
return ;
}
void f()
{
for(int i=1;i<=19;i++)
for(int j=1;j<=19;j++)
arr[i][j]=arr1[i][j];
}
int main()
{
int m,v,a,b;
for(int i=1;i<=19;i++)
for(int j=1;j<=19;j++)
scanf("%d",&arr[i][j]);
for(int i=1;i<=19;i++)
for(int j=1;j<=19;j++)
arr1[i][j]=arr[i][j];
for(int i=1;i<=19;i++){
for(int j=1;j<=19;j++){
m=arr[i][j];
if(m!=0){
f();
k=0;
dfs1(i,j,m);
if(k==5){
a=i;
b=j;
break;
}
f();
k=0;
dfs2(i,j,m);
if(k==5){
a=i;
b=j;
break;
}
f();
k=0;
dfs3(i,j,m);
if(k==5){
a=i;
b=j;
break;
}
f();
k=0;
dfs4(i,j,m);
if(k==5){
a=i;
b=j;
break;
}
}
}
if(k==5) break;
}
if(k==5) printf("%d\n%d %d",m,a,b);
else printf("0");
return 0;
}