SPY 喜欢有用的算法,而 Markyyz 总是学习无用的算法。尽管他们学习的算法类型不同,但他们都喜欢一款名为《反恐精英》(简称“CS”,与现实中同名的游戏不同)的电脑游戏。这是一款双人竞技游戏。一名玩家扮演恐怖分子(简称“T”),负责安放炸弹。另一名玩家扮演反恐精英(简称“CT”),负责拆除炸弹。
游戏开始时,系统会生成一个带有电路的炸弹。该电路包含 $n$ 个枢纽(编号从 $1$ 到 $n$)和 $m$ 条导线。每条导线连接两个不同的枢纽,任意两个枢纽都可以通过导线直接或间接相连,且任意两个枢纽之间最多只有一条导线直接相连。换句话说,该电路可以看作是一个具有 $n$ 个顶点和 $m$ 条边的无向图,且没有重边或自环。
游戏分为三个阶段: 1. 安放炸弹阶段:T 将收到 $k$ 个编号从 $1$ 到 $k$ 的激活组件。T 需要选择 $k$ 个不同的枢纽 $h_1, h_2, \dots, h_k$,并将第 $i$ 个激活组件放置在第 $h_i$ 个枢纽上。 2. 拆除炸弹阶段:CT 将免费获得一个“有用工具包”,并购买 $q$ 个编号从 $1$ 到 $q$ 的“无用工具包”。一个有用工具包可以移除任意一个枢纽,而一个无用工具包只能按顺序移除带有激活组件的枢纽,这意味着第 $i$ 个无用工具包只能移除第 $h_i$ 个枢纽。一旦一个枢纽被移除,所有直接连接到它的导线都将被切断。 3. 激活炸弹阶段:如果任意两个激活组件通过导线直接或间接相连,炸弹将被激活,T 获胜。否则,炸弹将被拆除,CT 获胜。
例如,上图展示了一个由 19 个枢纽和 27 条导线组成的炸弹电路。T 获得了 6 个激活组件,并将它们放置在枢纽 16, 17, 2, 18, 12, 9 上。CT 可以购买 2 个无用工具包来移除第 16 个和第 17 个枢纽,然后用一个有用工具包移除第 5 个枢纽。
现在 Markyyz 扮演 T,SPY 扮演 CT。Markyyz 已经放置了 $k$ 个激活组件。为了在未来的游戏中节省资金,SPY 想要购买最少数量的无用工具包来拆除炸弹。尽管 SPY 自诩精通有用算法,但他无法在 $O((n + m) \log n)$ 的时间复杂度内找到答案。你能帮他计算出答案(换句话说,CT 要赢得游戏所需的最小 $q$ 值)吗?
输入格式
输入的第一行包含一个整数 $t$ ($1 \le t \le 5000$),表示测试用例的数量。 每个测试用例中: 第一行包含三个整数 $n, m, k$ ($2 \le n, m \le 2 \times 10^5, 2 \le k \le n$),分别表示枢纽的数量、导线的数量和激活组件的数量。 接下来的 $m$ 行,每行包含两个整数 $u, v$ ($1 \le u, v \le n, u \neq v$),表示连接第 $u$ 个枢纽和第 $v$ 个枢纽的一条导线。 下一行包含 $k$ 个不同的整数 $h_1, h_2, \dots, h_k$ ($1 \le h_i \le n$)。第 $i$ 个激活组件设置在第 $h_i$ 个枢纽上。 保证在所有测试用例中 $\sum n, \sum m \le 10^6$。
输出格式
你需要输出一行一个整数,表示 CT 赢得游戏所需的最小 $q$ 值。
样例
输入样例 1
1 19 27 6 1 2 1 3 2 4 3 4 2 5 4 5 5 6 5 8 6 7 6 8 8 7 8 9 7 9 7 10 9 10 5 11 11 12 12 13 13 14 14 12 11 15 11 16 16 17 16 18 17 18 17 19 18 19 16 17 2 18 12 9
输出样例 1
2