一年一度的冬季运动会即将在 K 市滑雪场举行。越野滑雪赛道所在的雪原可以用一个 M \times N 的高程网格来描述。网格中的某些格子被指定为赛道的检查点。
选手可以从一个格子滑到与它相邻的格子(即正北、正南、正东或正西方向紧挨着的格子),但只有当两个格子的高程之差的绝对值不超过难度等级 D 时,才允许这样滑行。
组委会希望为整条赛道确定一个尽可能小的难度等级 D,使得任意两个检查点之间都能通过若干次滑行互相到达。请你求出这个最小的 D。
第 1 行,两个整数 M 和 N。
第 2 行到第 1+M 行,每行 N 个整数,表示各格子的高程。
第 2+M 行到第 1+2M 行,每行 N 个值,为 0 或 1,其中 1 表示该格子是一个检查点。
一个整数,表示使所有检查点互相可达的最小难度等级 D。
3 3 10 12 30 11 40 35 13 14 50 1 0 0 0 0 0 1 0 1
18
5 5 5 5 5 5 5 5 90 90 90 5 5 90 20 90 5 5 90 90 90 5 5 5 5 5 20 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0
85
三个检查点分别位于左上角、左下角和右下角。当 D = 18 时,右下角的检查点可以沿 10 \to 12 \to 30 \to 35 \to 50 这条路线(最大高差 18)与其余检查点连通;当 D < 18 时,右下角的检查点无法从其他两个检查点到达。
中心的检查点被一圈高程为 90 的格子围住,想离开中心必须跨过高差 90 - 5 = 85 或 90 - 20 = 70 的边界,因此 D = 85。注意右下角高程为 20 的格子并不是检查点。
对于 100\% 的数据,满足 1 \leq M, N \leq 500,每个格子的高程是 0 到 10^9 之间的整数。