#include <iostream>
using namespace std;
char a[150][150];
int r[150][3];
int n;
void show(int k){
for(int i = 1;i < k;i++){
cout<<"("<<r[i][1]<<","<<r[i][2]<<")->";
}
cout<<"("<<r[k][1]<<","<<r[k][2]<<")"<<endl;
}
//从x、y点开始逐步探测
void num(int x,int y,int k){
r[k][1] = x;
r[k][2] = y;
a[x][y] = '1';//探测过的点,设置为不可探测,防止重复的探测
if(x == n && y == n){
show(k);
}else{
//左、上、右、下探测,且不越界
if(y - 1 >= 1 && a[x][y - 1] == '0') num(x,y - 1,k+1);
if(x - 1 >= 1 && a[x - 1][y] == '0') num(x-1,y,k+1);
if(y + 1 <= n && a[x][y + 1] == '0') num(x,y + 1,k+1);
if(x + 1 <= n && a[x + 1][y] == '0') num(x+1,y,k+1);
}
}
int main(){
int i,j;
cin>>n;
//0表示能走,1表示不能走
for(i = 1;i <= n;i++){
for(j = 1;j <= n;j++){
cin>>a[i][j];
}
}
num(1,1,1);
}
/**************************************************************
Problem: 1431
User: admin
Language: C++
Result: Accepted
Time:29 ms
Memory:2100 kb
****************************************************************/