在 Byteotia 有 $n$ 座城市,编号从 $1$ 到 $n$,以及 $n-1$ 条道路,每条道路直接连接两座城市。从任意一座城市出发,都可以通过唯一的一条路径到达其他所有城市,且不会经过重复的路径。
你负责 Byteotia 的反间谍工作。你刚刚收到消息,敌对势力 Bitotia 的间谍已经渗透到了一些城市!你知道 Bitotia 的间谍总是成对行动。当一对间谍中的一人发现有用的信息时,他们会试图到达另一名间谍所在的城市以分享发现。对于 $q$ 对间谍中的每一对,你都知道他们目前分别位于哪两座城市。
你的任务是确保没有任何一对间谍能够会面。为了实现这一目标,你可以宣布对任意一组城市进行隔离。禁止进入、经过或离开处于隔离状态的城市。
如果存在一个城市序列 $x_1, x_2, \dots, x_k$,其中没有任何城市处于隔离状态,且 $x_1$ 是其中一名间谍所在的城市,$x_k$ 是另一名间谍所在的城市,并且对于每个 $1 \le i \le k-1$,城市 $x_i$ 和 $x_{i+1}$ 之间有道路直接相连,那么这一对间谍就可以会面。
当然,你不想让整个国家陷入瘫痪,因此你希望尽可能少地隔离城市。你的任务是计算为了防止每一对间谍会面,必须隔离的最少城市数量。此外,你还必须提供任意一组满足该数量的、必须隔离的城市列表。
输入格式
输入的第一行包含两个整数 $n$ 和 $q$ ($2 \le n \le 5 \cdot 10^5$, $1 \le q \le 5 \cdot 10^5$),分别表示 Byteotia 的城市数量和间谍对的数量。
接下来的 $n-1$ 行包含道路的描述。第 $i$ 行(对于 $1 \le i \le n-1$)包含两个整数 $a_i$ 和 $b_i$ ($1 \le a_i, b_i \le n$, $a_i \neq b_i$),表示城市 $a_i$ 和 $b_i$ 之间有道路直接相连。
接下来的 $q$ 行包含间谍对的描述。第 $i$ 行(对于 $1 \le i \le q$)包含两个整数 $c_i$ 和 $d_i$ ($1 \le c_i, d_i \le n$, $c_i \neq d_i$),表示第 $i$ 对间谍所在的城市(一人在城市 $c_i$,另一人在城市 $d_i$)。多名间谍(来自不同对)可能位于同一座城市。
输出格式
输出的第一行应包含一个整数 $s$,表示为了防止每一对间谍会面,必须隔离的最少城市数量。第二行应包含 $s$ 个整数,表示为了实现这一目标必须隔离的城市。
样例
输入 1
7 3 1 2 1 3 2 4 2 5 2 6 3 7 1 5 1 6 3 7
输出 1
2 2 3
说明
图中有三对间谍,分别用字母 $A$、$B$ 和 $C$ 表示。如果城市 $2$ 和 $3$(用圆圈标记)被隔离,则没有任何一对间谍可以在不经过这些城市的情况下会面。其他有效的隔离城市列表还包括,例如,$1$ 和 $3$,或者 $1$ 和 $7$。
子任务
| 子任务 | 数据范围 | 分值 |
|---|---|---|
| 1 | $n, q \le 20$ | 9 |
| 2 | $q \le 2$ | 11 |
| 3 | 连接每一对间谍的路径最多与其他一条路径相交 | 17 |
| 4 | $a_i = i, b_i = i + 1$ 对于 $1 \le i \le n - 1$ | 12 |
| 5 | $a_i = i + 1, b_i = \lfloor \frac{i+1}{2} \rfloor$ 对于 $1 \le i \le n - 1$ | 23 |
| 6 | 无附加限制 | 21 |
如果你的答案仅第一行正确,你将获得该测试点 80% 的分数。你不需要输出第二行即可获得这些分数。