十六度空间
题号:NC264688
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

“不会有人 3202 年了还不知道宇宙是 16 维的吧?”

尽管宇宙的真正维数暂时无从得知,但这并不妨碍人们在高维空间中愉快地玩耍。

本题中,我们会给出 n 维空间中的 m 个点 p_1, p_2, \ldots, p_m

规定每一步中只能将 n 维中的某一维增加 1 或减少 1

现指定其中 k 个点 p_{q_1}, p_{q_2}, \ldots, p_{q_k} 作为可选择的起点,请你求出经过所有 m 个点的走法的最小步数,以及步数最小的不同走法的数量。

注:两种走法不同是指,两种走法的步数不同或者存在整数 j 使得两种走法的第 j 步不同。

输入描述:

1 行有 3 个整数 n, m, k,分别表示空间维数,点的个数,以及可选择的起点数。

接下来 m 行中的第 i 行有 n 个整数 p_{i, 1}, p_{i, 2}, \ldots, p_{i, n},其中第 j 个整数 p_{i, j} 表示第 i 个点 p_i 的第 j 维坐标。

最后一行有 k 个整数 q_1, q_2, \ldots, q_k,其中第 i 个整数 q_i 表示第 i 个可选择的起点的下标,即 p_{q_i} 是第 i 个可选择的起点。

输入数据保证:
\bullet 1 \leqslant n \leqslant 16, 1 \leqslant k \leqslant m \leqslant 16
\bullet 各坐标分量绝对值不超过 {10} ^ 5,即 \forall 1 \leqslant i \leqslant m, 1 \leqslant j \leqslant n|p_{i,j}| \leqslant {10} ^ 5
\bullet 所给的 m 个点互不相同,即 \forall 1 \leqslant a < b \leqslant m\displaystyle \sum_{i = 1}^{n} |p_{a,i} - p_{b,i}| > 0
\bullet 所给的 k 个可选择的起点的下标合法,且按严格升序给出,即 1 \leqslant q_1 < q_2 < \ldots < q_k \leqslant m

输出描述:

输出共 2 行。

1 行输出一个整数表示最小步数。

2 行输出一个非负整数,表示步数最小的不同走法的数量对 998244353 取模后的结果。
示例1

输入

复制
1 3 1
0
2
-2
1

输出

复制
6
2

说明

1 种走法:
(0) \to (1) \to (2) \to (1) \to (0) \to (-1) \to (-2),共 6 步。

2 种走法:
(0) \to (-1) \to (-2) \to (-1) \to (0) \to (1) \to (2),共 6 步。
示例2

输入

复制
1 5 1
0
1
2
-1
-3
1

输出

复制
7
1

说明

只有一种走法:(0) \to (1) \to (2) \to (1) \to (0) \to (-1) \to (-2) \to (-3),共 7 步。
示例3

输入

复制
2 5 5
0 0
1 1
1 -1
-1 1
-1 -1
1 2 3 4 5

输出

复制
8
160

说明

可能的一种走法为:(-1, 1) \to (0, 1) \to (0, 0) \to (0, 1) \to (1, 1) \to (1, 0) \to (1, -1) \to (0, -1) \to (-1, -1),共 8 步。
示例4

输入

复制
1 1 1
0
1

输出

复制
0
1

说明

只有一种走法:(0),共 0 步。