Mr. Panda 热爱玩游戏。最近他迷上了一款名为 TubeMaster 的游戏。
在 TubeMaster 中,玩家可以在 $N \times M$ 的网格中铺设管道。每个单元格可以保持为空,或者放置以下四种管道中的恰好一种:
当两个共享同一条边的相邻单元格通过管道连接时(例如下图所示),玩家将获得一定的分数(分数将在输入格式部分说明)。
有些单元格被视为“必要单元格”,这意味着这些单元格中的每一个都必须包含管道,否则玩家将输掉游戏。
在游戏结束前,网格必须处于合法的配置状态,否则玩家将输掉游戏。
合法的配置必须满足以下条件: 每个单元格要么不包含管道,要么包含的管道属于某个管道环。 每个必要单元格都必须包含管道。
注意,合法的配置中可能同时出现多个管道环,且当没有必要单元格时,空网格也可以是合法的配置。
在上面的网格中,左侧的是合法配置,而中间和右侧的不是。(灰色单元格为必要单元格)
Mr. Panda 想要通过获得最大化的分数累积来赢得游戏。请你帮他计算这个数值。
输入格式
输入的第一行包含测试用例的数量 $T$。
接下来是 $T$ 个测试用例。每个测试用例的第一行包含两个由空格分隔的数字 $N$ 和 $M$,分别表示网格的行数和列数。
接下来 $N$ 行,每行包含 $M-1$ 个由空格分隔的数字,其中 $\text{ScoreC}_{i,j}$(即第 $i$ 行的第 $j$ 个数)表示连接单元格 $(i, j)$ 和单元格 $(i, j+1)$ 的管道所获得的分数。
接下来 $N-1$ 行,每行包含 $M$ 个由空格分隔的数字,其中 $\text{ScoreR}_{i,j}$(即第 $i$ 行的第 $j$ 个数)表示连接单元格 $(i, j)$ 和单元格 $(i+1, j)$ 的管道所获得的分数。
接下来一行包含一个数字 $E$,表示必要单元格的数量。
最后 $E$ 行,每行包含两个由空格分隔的数字 $R_i$ 和 $C_i$,表示单元格 $(R_i, C_i)$ 是一个必要单元格。
输出格式
对于每个测试用例,输出一行 “Case #x: y”,其中 $x$ 是测试用例编号(从 1 开始),$y$ 是 Mr. Panda 赢得游戏时能获得的最大分数累积。如果 Mr. Panda 无法赢得游戏,则 $y$ 输出 “Impossible”。
数据范围
- $1 \le T \le 100$
- $1 \le N, M \le 30$
- $-500 \le \text{ScoreC}_{i,j}, \text{ScoreR}_{i,j} \le 500$
- $0 \le E \le 100$
- $1 \le R_i \le N$
- $1 \le C_i \le M$
- 对于 40% 的测试用例,$N, M \le 10$。
样例
样例输入 1
2 4 4 0 0 -1 0 1 0 0 -1 -1 0 1 0 1 0 1 0 -1 -1 0 0 1 1 -1 -1 1 3 3 2 3 0 0 0 0 0 0 0 2 1 1 2 3
样例输出 1
Case #1: 2 Case #2: Impossible