당신은 $N \times M$ 크기의 $2$차원 공간 상에 $(1, 1)$에 위치해 있고, $(N, M)$으로 이동해야 한다. $(1, 1)$이 맨 왼쪽 위, $(N, M)$이 맨 오른쪽 아래가 되며 상하좌우로 인접한 지점으로만 이동이 가능하다.
지점 $(i, j)$를 자유롭게 드나들기 위해서는, $T_{ij}$ 보다 수치가 같거나 큰 통행권을 들고 있어야 한다. $(1, 1)$에서 처음 이동을 시작하기 전 적당한 수치의 통행권 하나를 구매할 수 있다. 통행권은 무한히 사용할 수 있지만, $(1, 1)$에서 처음 이동을 시작하면 더 이상 새 통행권을 구매할 수 없다.
예를 들어 공간의 크기가 $3 \times 4$이고 지점 별 $T$가 다음과 같다고 해보자.
여기서 당신이 수치가 $3$인 통행권을 소지한 채 이동을 시작한다면, 이동 가능한 지점은 다음과 같다.
만약 $3$보다 수치가 낮은 통행권을 가지고 시작했다면, $(1, 1)$에서 $(3, 4)$에 도달할 수 있는 경로가 없었을 것이다.
$2$차원 공간의 크기와 지점 별 $T$가 주어졌을 때, $(1, 1)$에서 $(N, M)$에 도달 가능하게 하기 위해 구매해야 할 통행권 수치의 최솟값을 구하는 프로그램을 작성해 보자.
첫째 줄에 $2$차원 공간의 세로 길이 $N$과 가로 길이 $M$이 공백으로 구분되어 주어진다. $(1 ≤ N, M ≤ 100)$
둘째 줄부터 $N$개의 줄에 걸쳐 $1, 2, ... , N$번 행의 지점 별 $T$가 공백으로 구분되어 주어진다. $(0 ≤ T_{ij} ≤ 100)$
3 4
0 2 5 4
3 4 2 1
3 2 1 0
3