# n, m 입력
n, m = map(int, input().split())
# maze 입력
maze = [
list(map(int, input().split()))
for _ in range(n)
]
# in_range(x, y)
def in_range(x, y):
return 0 <= x < n and 0 <= y < m
# can_go(x, y)
def can_go(x, y):
# 범위 내에 있고, 방문한 적 없고, 뱀이 아니면 가능
return in_range(x, y) and not visited[x][y] and maze[x][y]
# bfs()
def bfs():
# dxs, dys
dxs, dys = [-1, 1, 0, 0], [0, 0, -1, 1]
while q:
x, y = q.popleft()
for dx, dy in zip(dxs, dys):
nx, ny = x + dx, y + dy
# 갈 수 있으면
if can_go(nx, ny):
# 큐에 넣어주고
q.append((nx, ny))
# 방문 처리
visited[nx][ny] = True
# 설계
# visited
visited = [
[False] * m
for _ in range(n)
]
# 큐 사용 준비
from collections import deque
q = deque()
# 큐에 넣어주고
q.append((0, 0))
# 방문 처리하고
visited[0][0] = True
# bfs
bfs()
# 마지막 칸에 도착했으면
if visited[-1][-1]:
# 1 출력
print(1)
# 도착 못했으면
else:
# 0 출력
print(0)