def find_mg(start_x, start_y, end_x, end_y, mg_list, step_list):
step_list_tmp = step_list
if start_x == end_x and start_y == end_y: # 结束条件
return step_list
list_tmp = [] # 存储上下左右的返回值
# 往4个放下走
# 上 # 没有越界,且可走,并且不是已走过的
if start_x > 0 and mg_list[start_x-1][start_y] == 0 and (start_x-1, start_y) not in step_list_tmp:
up = find_mg(start_x-1, start_y, end_x, end_y, mg_list, step_list+[(start_x-1, start_y)])
else:
up = None
if up:
step_list.append((start_x-1, start_y))
list_tmp.append(up)
# 下 # 没有越界,且可走,并且不是已走过的
if start_x < end_x and mg_list[start_x+1][start_y] == 0 and (start_x+1, start_y) not in step_list_tmp:
down = find_mg(start_x+1, start_y, end_x, end_y, mg_list, step_list+[(start_x+1, start_y)])
else:
down = None
if down:
step_list.append((start_x+1, start_y))
list_tmp.append(down)
# 左 # 没有越界,且可走,并且不是已走过的
if start_y > 0 and mg_list[start_x][start_y-1] == 0 and (start_x, start_y-1) not in step_list_tmp:
left = find_mg(start_x, start_y-1, end_x, end_y, mg_list, step_list+[(start_x, start_y-1)])
else:
left = None
if left:
step_list.append((start_x, start_y - 1))
list_tmp.append(left)
# 右 # 没有越界,且可走,并且不是已走过的
if start_y < end_y and mg_list[start_x][start_y+1] == 0 and (start_x, start_y+1) not in step_list_tmp:
right = find_mg(start_x, start_y+1, end_x, end_y, mg_list, step_list+[(start_x, start_y+1)])
else:
right = None
if right:
step_list.append((start_x, start_y + 1))
list_tmp.append(right)
res = []
for i in list_tmp:
if i[-1][0] == end_x and i[-1][1] == end_y:
res.append(i)
if len(res) >= 1:
return sorted(res, key=lambda x: -len(x))[0]
else:
return None
def func():
while True:
try:
m, n = map(int, input().split())
mg = []
for i in range(m): # 迷宫矩阵
mg.append(list(map(int, input().split())))
step_list = [(0, 0)]
min_path = find_mg(0, 0, m-1, n-1, mg, step_list)
for i in min_path:
print('({},{})'.format(i[0], i[1]))
except:
break
if __name__ == '__main__':
func()