BFS
#include <iostream>
#include <queue>
#include <cstring>
#include <cstdio>
#include <vector>
#define sf scanf
#define pf printf
#define mem(vis,a) memset(visit,a,sizeof(visit));
using namespace std;
struct point{
int x;int y;
point(){}
point(int xx,int yy):x(xx),y(yy){}
friend ostream& operator << (ostream & out,const point &a)
{
out<<"("<<a.x<<", "<<a.y<<")"<<endl;
return out;
}
};
point p[5][5];
int a[5][5];
int visit[5][5];
int dir[4][2]={{1,0},{-1,0},{0,1},{0,-1}};
void bfs(point start)
{
queue<point>Q;
Q.push(start);
visit[start.x][start.y]=1;
while(!Q.empty())
{
point np=Q.front();
Q.pop();
for(int i=0;i<4;i++)
{
point temp;temp.x=np.x+dir[i][0];temp.y=np.y+dir[i][1];
if(temp.x>=0&&temp.x<5&&temp.y>=0&&temp.y<5&&a[temp.x][temp.y]==0&&!visit[temp.x][temp.y])
{
visit[temp.x][temp.y]=1;
p[temp.x][temp.y]=np;
Q.push(temp);
}
}
}
}
void print(int i,int j)
{
if(i==0&&i==0)
return;
else
{
print(p[i][j].x,p[i][j].y);cout<<p[i][j];
}
}
int main()
{
while(cin>>a[0][0])
{
mem(visit,0);
for(int i=0;i<5;i++)
for(int j=0;j<5;j++)
if(i==0&&j==0) continue;
else cin>>a[i][j];
bfs(point(0,0));
print(4,4);
cout<<point(4,4);
}
}