#include <iostream>
#include <cstring>
#include <vector>
using namespace std;
int m,n;
bool flag=0;//表示是否到达了终点
vector<vector<int>> ans;//记录路径答案
void dfs(int i,int j,vector<vector<bool>> st,vector<vector<int>> map){
st[i][j]=1;
if(i==m&&j==n){
flag=1;//表示已到达终点
ans.push_back({i-1,j-1});//记录
return;
}
if(!st[i][j+1]&&map[i][j+1]==0&&!flag){//到达终点前,遇见可以走的路就要走
dfs(i,j+1,st,map);
}
if(!st[i][j-1]&&map[i][j-1]==0&&!flag){//到达终点前,遇见可以走的路就要走
dfs(i,j-1,st,map);
}
if(!st[i+1][j]&&map[i+1][j]==0&&!flag){//到达终点前,遇见可以走的路就要走
dfs(i+1,j,st,map);
}
if(!st[i-1][j]&&map[i-1][j]==0&&!flag){//到达终点前,遇见可以走的路就要走
dfs(i-1,j,st,map);
}
if(flag) ans.push_back({i-1,j-1});//到达终点之后,返回时记录路径
return;
}
int main() {
cin>>m>>n;
vector<vector<int>> map(m+2,vector<int>(n+2));//记录迷宫
vector<vector<bool>> st(m+2,vector<bool>(n+2));//记录当前是否已经到达过
for(int i=1;i<=m;i++){
for(int j=1;j<=n;j++){
cin>>map[i][j];
}
}
for(int i=0;i<m+2;i++){
map[i][0]=1;
map[i][n+1]=1;
}
for(int j=0;j<n+2;j++){
map[0][j]=1;
map[m+1][j]=1;
}//初始化迷宫
dfs(1,1,st,map);//起点出发开始dfs
for(int i=ans.size()-1;i>=0;i--){
cout<<"("<<ans[i][0]<<","<<ans[i][1]<<")"<<endl;//倒序打印路径
}
}