import java.util.ArrayList;
import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
// 注意 hasNext 和 hasNextLine 的区别
while (in.hasNextInt()) { // 注意 while 处理多个 case
// int a = in.nextInt();
// int b = in.nextInt();
// System.out.println(a + b);
int h = in.nextInt();
int w = in.nextInt();
int[][] arr = new int[h][w];
for (int i=0;i<h;i++) {
for (int j=0;j<w;j++) {
arr[i][j] = in.nextInt();
}
}
ArrayList<Point> road = new ArrayList<>();
walk(arr, 0, 0, road);
for (int i=0;i<road.size();i++) {
System.out.println("(" + road.get(i).x + "," + road.get(i).y + ")");
}
}
}
private static boolean walk(int[][] arr, int x, int y, ArrayList<Point> road) {
// 1. 插入新节点
road.add(new Point(x,y));
arr[x][y] = 1;
// 2. 判断结束条件
if (x == arr.length-1 && y == arr[0].length-1) {
return true;
}
// 3. 尝试所有可能的下一步节点
// 3.1. 右
if (y+1 < arr[0].length && arr[x][y+1] == 0) {
if (walk(arr, x, y+1, road)) {
return true;
}
}
// 3.2. 下
if (x+1 < arr.length && arr[x+1][y] == 0) {
if (walk(arr, x+1, y, road)) {
return true;
}
}
// 3.3. 左
if (y-1 >= 0 && arr[x][y-1] == 0) {
if (walk(arr, x, y-1, road)) {
return true;
}
}
// 3.4. 上
if (x-1 >= 0 && arr[x-1][y] == 0) {
if (walk(arr, x-1, y, road)) {
return true;
}
}
// 4. 回溯
road.remove(road.size()-1);
arr[x][y] = 0;
return false;
}
}
class Point {
public int x;
public int y;
public Point(int x, int y) {
this.x = x;
this.y = y;
}
}