y_size, x_size = [int(x) for x in input().split()]
board = []
while True:
    try:
        line = [int(x) for x in input().split()]
        board.append(line)
    except:
        break
#判断路径落点是否在迷宫内
def isValid(x, y):
    if x>=0 and x<=x_size-1:
        if y>=0 and y<=y_size-1:
            return True
    return False
#步骤1:确认入口参数为迷宫,横坐标,纵坐标,当前路径,上一次移动方向;找到一条路径立即返回,因此需要有返回值
def searchRoad(board, x, y, path, pre_dir):
	#步骤2:回溯终止条件为到达迷宫出口
    if x==x_size-1 and y==y_size-1:
        for move in path:
            print("({},{})".format(move[0],move[1]))
        return True
    #步骤3:单层递归逻辑本质上是遍历四叉树,传入上一次移动方向防止进入死循环
    if isValid(x+1, y) and board[y][x+1]==0 and pre_dir!="Left":
        path.append([y, x+1])
        if searchRoad(board, x+1, y, path, "Right"): return True
        path.pop()
    if isValid(x, y+1) and board[y+1][x]==0 and pre_dir!="Up":
        path.append([y+1, x])
        if searchRoad(board, x, y+1, path, "Down"): return True
        path.pop()
    if isValid(x-1, y) and board[y][x-1]==0 and pre_dir!="Right":
        path.append([y, x-1])
        if searchRoad(board, x-1, y, path, "Left"): return True
        path.pop()
    if isValid(x, y-1) and board[y-1][x]==0 and pre_dir!="Down":
        path.append([y-1, x])
        if searchRoad(board, x, y-1, path, "Up"): return True
        path.pop()
searchRoad(board, 0, 0, [[0,0]], "None")