#include <iostream>
#include <cstdio>
using namespace std;
//英语 看博友分析 抄博友程序 博弈 剪枝 没掌握
char da[4][4];
int sum;
bool check()
{
int la=0,lb=0,ra=0,rb=0,xa=0,xb=0,ya=0,yb=0;
for(int i=0;i<4;i++)
{
xa=0,xb=0;
for(int j=0;j<4;j++)
{
if(da[i][j]=='x')
{
xa++;
}else if(da[i][j]=='o')
{
xb++;
}
}
if(xa==4 ||xb==4)
{
return 1;
}
}
for(int i=0;i<4;i++)
{
ya=0,yb=0;
for(int j=0;j<4;j++)
{
if(da[j][i]=='x')
{
ya++;
}else if(da[j][i]=='o')
{
yb++;
}
}
if(ya==4 ||yb==4)
{
return 1;
}
}
for(int i=0;i<4;i++)
{
if(da[i][i]=='x')
{
la++;
}else if(da[i][i]=='o')
{
lb++;
}
}
if(la==4 || lb==4)
{
return 1;
}
for(int i=0;i<4;i++)
{
if(da[i][3-i]=='x')//抄博友程序
{
ra++;
}else if(da[i][3-i]=='o')
{
rb++;
}
}
if(ra==4 || rb==4)
{
return 1;
}
return 0;
}
int alpha();
int beta();
int jx,jy;
int found()
{
for(int i=0;i<4;i++)
{
for(int j=0;j<4;j++)
{
if(da[i][j]=='.')
{
da[i][j]='x';
sum++;
int ans=beta();
if(ans==1)
{
jx=i;
jy=j;
return 1;
}
da[i][j]='.';
sum--;
}
}
}
return 0;
}
int beta()
{
if(check()) return 1;//抄博友程序 己方胜
if(sum==16) return 0;
for(int i=0;i<4;i++)
{
for(int j=0;j<4;j++)
{
if(da[i][j]=='.')
{
da[i][j]='o';
sum++;
int ans=alpha();
sum--;
da[i][j]='.';
if(ans==-1)//抄博友程序
{
return -1;
}
}
}
}
return 1;
}
int alpha()
{
if(check())return -1;//对方胜
if(sum==16)return -1;//抄博友程序
for(int i=0;i<4;i++)
{
for(int j=0;j<4;j++)
{
if(da[i][j]=='.')
{
sum++;
da[i][j]='x';
int ans=beta();
sum--;
da[i][j]='.';
if(ans==1)
{
return 1;
}
}
}
}
return -1;
}
int main()
{
while(1)
{
char c;
cin>>c;
//cout<<c<<endl;
if(c=='$')
{
break;
}
sum=0;
for(int i=0;i<4;i++)
{
for(int j=0;j<4;j++)
{
cin>>da[i][j];
if(da[i][j]!='.')
{
sum++;
}
}
}
/*
for(int i=0;i<4;i++)
{
for(int j=0;j<4;j++)
{
cout<<da[i][j]<<" ";
}
cout<<endl;
}*/
if(sum<=4)//抄博友程序 没掌握
{
cout<<"#####"<<endl;
continue;
}
if(found()==1)
{
cout<<"("<<jx<<","<<jy<<")"<<endl;
}else
{
cout<<"#####"<<endl;
}
}
return 0;
}