很久以前,在我们的现代文明兴起之前,在你们任何人出生之前,是公元前 1966 年(SWERC 前 3961 年)。在这个黑暗的时期,既没有流媒体服务,也没有任何编程竞赛。因此,为了娱乐自己,人类在泥板上玩着一些原始的游戏。
今年,人们创造了一款神秘的游戏:Kakurus。我们对 Kakurus 几乎一无所知(当时互联网档案馆尚未建立),除了在你发现的一件文物上描述的以下几条规则:
- 游戏在一个 $M \times N$ 的网格上进行;
- 每个格子要么是黑色,要么是白色;
- 白色格子最初是空的,但你必须在每个白色格子内填入一个 $1$ 到 $9$(含)之间的整数;
- 水平限制:一个黑色格子可以包含一个整数,该整数对应于其右侧连续白色格子的数值之和(直到遇到第一个黑色格子或网格边界);
- 垂直限制:一个黑色格子可以包含一个整数,该整数对应于其下方连续白色格子的数值之和(直到遇到第一个黑色格子或网格边界)。
请注意,最后两条规则是相互独立的:一个黑色格子内部可以有 0、1 或 2 个整数。还请注意,对数字的重复没有限制。最后,为了使这个问题有趣,每个白色格子都恰好被一个垂直限制和一个水平限制所覆盖。
在你的文物底部有一个 Kakurus 网格。它已经被填满了,但不一定是一个正确的解——这可能是由于这件古老文物的年代久远而导致的损坏。你能找到一个与这个给出的参考解尽可能接近的有效解吗?
如果你在某个白色格子上填写的数字是 $X$,而该格子在参考解中的值为 $T$,那么接近度得分为 $|X - T|$。网格的最终接近度得分是所有格子接近度得分的总和。你的目标是找到可以达到的最小接近度得分。
输入格式
输入的第一行包含三个整数 $M$、$N$ 和 $S$,分别表示网格的行数、列数以及和限制的数量。
接下来有 $M$ 行。其中的第 $i$ 行仅包含数字 0 到 9。第 $j$ 个字符等于 0 当且仅当第 $i$ 行第 $j$ 列($1 \le i \le M$,$1 \le j \le N$)的格子是黑色的,否则它等于该格子在参考解中的值(因此该格子是白色的)。
接下来有 $S$ 行。每行格式为 c i j s,其中 $c$ 等于 H 或 V,$1 \le i \le M$,$1 \le j \le N$,且 $s$ 是一个介于 $1$ 和 $135$(含)之间的整数。在你的解中,位于第 $i$ 行第 $j$ 列的格子右侧(当 $c = \text{H}$ 时)或下方(当 $c = \text{V}$ 时)的连续白色格子的数值之和必须等于 $s$。
保证每个白色格子都恰好被一个垂直限制和一个水平限制所覆盖。
输出格式
如果网格无解,你必须输出 IMPOSSIBLE。否则,你的输出应该包含可以达到的最小接近度得分。
数据范围
- $1 \le M \le 16$;
- $1 \le N \le 16$;
- $0 \le S \le 2 \times M \times N$。
样例
输入样例 1
4 4 7 0000 0032 0233 0204 H 3 1 9 V 1 3 6 H 2 2 5 V 2 2 5 V 1 4 9 H 4 1 2 H 4 3 4
输出样例 1
1
输入样例 2
3 4 5 0000 0012 0345 H 2 2 3 H 3 1 12 V 2 2 3 V 1 3 5 V 1 4 6
输出样例 2
IMPOSSIBLE