题目描述

你和 $Elo$ 正在玩一个填数字游戏。

游戏在一个 $n\times m$ 大小的网格上进行,一开始,有一个可重数字集合 $s$,大小为 $n\times m$,你和 $Elo$ 要一起把这些数字全部填入网格中,一个网格只能填入一个数字,一个数字只能被使用一次,你们希望填完后网格内相邻数字绝对值差总和尽量小,准确来说,令 $a_{i,j}$为网格中的数字,希望最小化 $Value$:

$$Value =\sum_{i=1}^{n-1} \sum_{j=1}^{m}|a_{i,j}-a_{i+1,j}|\space \space \space \space +\space \space \space \space \sum_{i=1}^{n} \sum_{j=1}^{m-1}|a_{i,j}-a_{i,j+1}|$$

如图所示样例:

$$则 Value = |5-8|+|1-4|+|5-1|+|8-4| = 14$$

$Elo$ 觉得这个游戏太无聊,于是祂直接一口气填完了一半格子,并且这些格子两两不相邻

祂得意地润了,留下了对着网格苦恼的你。


输入格式

第一行三个整数 $n, m, k (1\leq n,m \leq 20, 1\leq k \leq n\times m)$,分别表示网格大小与可重数字集合 $s$ 大小。

接下来一行 $k$ 个整数,第 $i$ 个表示 $s_{i}(0\leq s_{i}\leq 10^9)$

接下来 $n$ 行,每行 $m$ 个整数 $a_{i,j} (-1\leq a_{i,j}\leq 10^9)$,表示目前网格中填数情况。若 $a_{i,j} = -1$,则表示网格 $(i,j)$位置为空,需要填数;若 $a_{i,j} \ge 0 $,则表示网格 $(i,j)$位置已被 $Elo$ 填数。

数据保证:

1、所有 $a_{i,j} = -1$ 的位置两两不相邻

2、所有 $a_{i,j} \ge 0$ 的位置两两不相邻

3、$a_{i,j} = -1$ 的位置个数与 $k$ 相等。

两个格子是相邻的当且仅当它们存在一条共享边。


输出格式

一行一个整数,表示能得到的最小 $Value$ 。


样例数据

输入

2 2 2
4 5
-1 8
1 -1

输出

14

备注


操作

评测记录

优秀代码

信息

时间限制: 2s
内存限制: 256MB
评测模式: Normal

题解