Byteland 有 $n$ 座城市和 $m$ 条双向道路。这些城市编号为 $1, 2, \dots, n$,第 $i$ 座城市的亮度为 $b_i$。
魔法师 Sunset 想要在 Byteland 制造一场全食,使得每座城市的亮度都变为零。Sunset 可以进行任意次数的以下操作:
- 从考虑范围内移除所有亮度为零的城市。
- 选择一个整数 $k$ ($1 \le k \le n$)。
- 选择 $k$ 个互不相同且未被移除的城市 $c_1, c_2, \dots, c_k$ ($1 \le c_i \le n$),使得它们彼此连通。换句话说,对于任意一对不同的选中城市 $c_i$ 和 $c_j$ ($1 \le i < j \le k$),如果你位于城市 $c_i$,你可以通过仅经过 $\{c_1, c_2, \dots, c_k\}$ 中的城市到达城市 $c_j$。
- 对于每个选中的城市 $c_i$ ($1 \le i \le k$),将 $b_{c_i}$ 减 1。
Sunset 在每次操作中总是会选择尽可能大的 $k$。现在 Sunset 想知道他需要进行的最少操作次数是多少,请编写一个程序来帮助他。
输入格式
第一行包含一个整数 $T$ ($1 \le T \le 10$),表示测试用例的数量。对于每个测试用例:
第一行包含两个整数 $n$ 和 $m$ ($1 \le n \le 100\,000, 1 \le m \le 200\,000$),分别表示城市数量和道路数量。
第二行包含 $n$ 个整数 $b_1, b_2, \dots, b_n$ ($1 \le b_i \le 10^9$),表示每座城市的亮度。
接下来的 $m$ 行,每行包含两个整数 $u_i$ 和 $v_i$ ($1 \le u_i, v_i \le n, u_i \neq v_i$),表示第 $u_i$ 座城市和第 $v_i$ 座城市之间的一条双向道路。注意,同一对城市之间可能存在多条道路。
输出格式
对于每个测试用例,输出一行,包含一个整数:最少操作次数。
样例
输入 1
1 3 2 3 2 3 1 2 2 3
输出 1
4