#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
****************************************************************/