Uolevi 在一个 $n \times m$ 网格状的冰面上,每个方格上都有一枚硬币。 每个方格都有一个耐久度:该方格冰面所能承受的最大硬币数量。
在每一步中,Uolevi 可以向上、下、左、右移动一格,但不能离开冰面范围。 如果 Uolevi 当前所在的方格上有硬币,他可以将其捡起。
当 Uolevi 移动到一个方格时,该方格上的硬币总数不得超过该方格的耐久度。这包括 Uolevi 携带的硬币,以及如果该方格上的硬币尚未被捡起,也计入其中。Uolevi 自身的重量忽略不计。
Uolevi 希望从冰面的某个边缘方格出发,并在某个边缘方格结束行程。他最多能收集多少枚硬币?
输入格式
第一行包含两个整数 $n$ 和 $m$:冰面的高度和宽度。
接下来 $n$ 行,每行包含 $m$ 个整数:每个方格冰面的耐久度 $d$。
输出格式
输出 Uolevi 最多能收集的硬币数量。
样例
样例输入 1
3 4 1 1 1 1 1 3 6 1 3 4 5 1
样例输出 1
5
说明
Uolevi 可以从左上角方格出发,按以下路径移动:
下 $\rightarrow$ 捡起硬币 $\rightarrow$ 右 $\rightarrow$ 捡起硬币 $\rightarrow$ 下 $\rightarrow$ 左 $\rightarrow$ 捡起硬币 $\rightarrow$ 右 $\rightarrow$ 捡起硬币 $\rightarrow$ 右 $\rightarrow$ 捡起硬币
注意,Uolevi 无法收集六枚硬币,因为这样他就无法在收集完后回到边缘方格。
子任务
子任务 1 (17 分)
- $1 \le nm \le 16$
- $1 \le d \le 16$
子任务 2 (12 分)
- $1 \le nm \le 2 \cdot 10^5$
- $1 \le d \le 5$
子任务 3 (11 分)
- $n = 1$, $1 \le m \le 100$
- $1 \le d \le 100$
子任务 4 (19 分)
- $n = 1$, $1 \le m \le 2 \cdot 10^5$
- $1 \le d \le 2 \cdot 10^5$
子任务 5 (14 分)
- $1 \le nm \le 1000$
- $1 \le d \le 1000$
子任务 6 (27 分)
- $1 \le nm \le 2 \cdot 10^5$
- $1 \le d \le 2 \cdot 10^5$