给你一个由 $1$ 到 $n$ 的整数组成的排列 $p_1, p_2, \dots, p_n$。从 $1$ 到 $n$ 的每个位置都被染成了 $k$ 种颜色之一。我们想要对该排列进行排序,为此,我们可以进行任意次数的以下类型的操作:
- 交换任意两个元素。此操作的花费为 $S$ 个硬币;
- 选择任意一种颜色 $i$,并按你的意愿任意重新排列颜色为 $i$ 的位置上的元素。此操作的花费为 $C_i$ 个硬币。
请注意,被染色的是位置,而不是元素本身。因此,当你交换两个元素时,这些位置的颜色不会改变。
求将排列排序所需的最小硬币数。
输入格式
输入的第一行包含一个整数 $T$ ($1 \le T \le 10^3$) —— 你需要处理的独立测试用例的数量。接下来是测试用例的描述。
每个测试用例的第一行包含两个整数 $n$ 和 $k$ ($1 \le n \le 10^5$, $1 \le k \le 5$) —— 排列的大小和颜色的数量。
每个测试用例的第二行包含 $(k + 1)$ 个整数 $S, C_1, C_2, \dots, C_k$ ($0 \le S, C_i \le 10^9$) —— 操作的花费。
每个测试用例的第三行包含 $n$ 个整数 $p_1, p_2, \dots, p_n$ ($1 \le p_i \le n$,所有 $p_i$ 互不相同) —— 排列。
每个测试用例的第四行包含 $n$ 个整数 $col_i$ ($1 \le col_i \le k$) —— 位置的颜色。
单个文件中所有测试用例的 $n$ 之和不超过 $10^5$。
输出格式
对于每个测试用例,输出一个整数 —— 将排列排序所需的最小硬币数。
样例
输入样例 1
4 4 1 1 10 2 3 4 1 1 1 1 1 4 1 10 1 2 3 4 1 1 1 1 1 6 2 10 1 1 5 2 4 6 1 3 1 2 1 2 1 2 4 3 6 7 8 9 1 2 3 4 2 2 3 2
输出样例 1
3 1 12 0
说明
在第一个测试用例中,我们可以通过执行 3 次“交换”操作来对排列进行排序:$(2, 3, 4, 1) \to (4, 3, 2, 1) \to (4, 2, 3, 1) \to (1, 2, 3, 4)$。这样你将花费 3 个硬币。
另一种排序方法是重新排列颜色为 1 的位置上的所有元素,但这将花费 10 个硬币,我们可以用更便宜的方法。
在第二个测试用例中(它与第一个测试用例的唯一区别在于操作的花费),直接重新排列颜色为 1 的位置上的所有元素更便宜,只需花费 1 个硬币。
在第三个测试用例中,一种最优的操作序列如下:
- 重新排列颜色为 2 的位置上的元素,得到排列 $(5, 2, 4, 3, 1, 6)$。此操作花费 1 个硬币。
- 交换元素 $p_3, p_4$。此时排列变为 $(5, 2, 3, 4, 1, 6)$。此操作花费 10 个硬币。
- 重新排列颜色为 1 的位置上的元素,得到排列 $(1, 2, 3, 4, 5, 6)$。此操作花费 1 个硬币。
总共,我们花费了 12 个硬币。
在第四个测试用例中,排列已经是有序的,所以我们不需要花费任何硬币。