import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();//横坐标
        int m = in.nextInt();//纵坐标
        int[][] maze = new int[n][m];
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < m; j++) {
                maze[i][j] = in.nextInt();
            }
        }
        List<Point> road = new ArrayList<Point>();
        road.add(new Point(0, 0));
        //深度优先搜索dfs
        findNext(maze, road);
        //打印路径
        for (int i = 0; i < road.size(); i++) {
            Point point = road.get(i);
            System.out.println("(" + point.x + "," + point.y + ")");
        }

    }
    //第p个位置往下找节点
    private static boolean findNext(int[][] maze, List<Point> road) {
        Point point = road.get(road.size() - 1);
        if(point.x==maze.length-1&&point.y==maze[0].length-1){
            return true;
        }
        Point lastPoint = road.size()>1?road.get(road.size() - 2):null;
        Point next = null;
        //向左找 x-1
        if (point.x > 0 && (lastPoint==null||lastPoint.x != point.x - 1) &&
                maze[point.x - 1][point.y] != 1) {
            next = new Point(point.x - 1, point.y);
            // System.out.println("add(" + next.x + "," + next.y + ")");
            road.add(next);
            if (findNext(maze, road)) {
                return true;
            }
            // System.out.println("remove(" + next.x + "," + next.y + ")");
            road.remove(next);
        }
        //向右找 x+1
        if (point.x < maze.length-1 && (lastPoint==null||lastPoint.x != point.x + 1) &&
                maze[point.x + 1][point.y] != 1) {
            next = new Point(point.x + 1, point.y);
            // System.out.println("add(" + next.x + "," + next.y + ")");
            road.add(next);
            if (findNext(maze, road)) {
                return true;
            }
            // System.out.println("remove(" + next.x + "," + next.y + ")");
            road.remove(next);
        }
        //向上找 y-1
        if (point.y > 0 && (lastPoint==null||lastPoint.y != point.y - 1) &&
                maze[point.x][point.y - 1] != 1) {
            next = new Point(point.x, point.y - 1);
            // System.out.println("add(" + next.x + "," + next.y + ")");
            road.add(next);
            if (findNext(maze, road)) {
                return true;
            }
            // System.out.println("remove(" + next.x + "," + next.y + ")");
            road.remove(next);
        }
        //向下找 y+1
        if (point.y < maze[0].length-1 && (lastPoint==null||lastPoint.y != point.y + 1) &&
                maze[point.x][point.y + 1] != 1) {
            next = new Point(point.x, point.y + 1);
            // System.out.println("add(" + next.x + "," + next.y + ")");
            road.add(next);
            if (findNext(maze, road)) {
                return true;
            }
            // System.out.println("remove(" + next.x + "," + next.y + ")");
            road.remove(next);
        }
        return false;
    }
}

class Point {
    int x;
    int y;
    public Point(int x, int y) {
        this.x = x;
        this.y = y;
    }
}