「我从未感觉饱到连一只羊羔也吃不下了。」—— Malnar 先生
一棵树(一个无环的简单连通图)上生活着一伙由 $K$ 只绵羊组成的羊群。这棵树包含 $N$ 个节点,用 $1$ 到 $N$ 的整数编号。树上的每个节点最多是一只绵羊的家。一位聪明的牧羊人意识到,狼迟早会学会爬树。
为了保护这些绵羊,我们需要在某些节点上安置牧羊人,使得每只绵羊都至少受到一位牧羊人的保护。已知每位牧羊人会保护所有距离他最近的绵羊,且仅保护这些绵羊。某只绵羊与某位牧羊人之间的距离等于包含该绵羊的节点与包含该牧羊人的节点之间唯一路径上的节点数(含端点)。此外,牧羊人可以与绵羊共处同一个节点。当然,在这种情况下,他只保护那一只绵羊。
确定需要安置在树节点上的最少牧羊人数量,使得每只绵羊都至少受到一位牧羊人的保护。此外,确定一种这样的牧羊人安置方案。
输入格式
第一行包含两个整数 $N$ 和 $K$($1 \le K \le N$),含义如题面所述。
接下来的 $N - 1$ 行,每行包含两个整数 $a_i$ 和 $b_i$($1 \le a_i, b_i \le N$),表示节点 $a_i$ 和 $b_i$ 之间有一条无向边。
下一行包含 $K$ 个互不相同的整数 $o_i$($1 \le o_i \le N$),表示含有绵羊的节点。
输出格式
第一行输出一个整数 $X$,表示最少需要的牧羊人数量。
第二行输出 $X$ 个空格分隔的整数,表示安置牧羊人的节点。
如果存在多种正确方案,你可以输出其中任意一种。
子任务
| 子任务 | 分值 | 数据范围 |
|---|---|---|
| 1 | 8 | $1 \le N \le 500\,000$,每个节点 $x = 1, \dots, N - 1$ 与节点 $x + 1$ 相连 |
| 2 | 18 | $1 \le K \le 15$,$1 \le N \le 500\,000$ |
| 3 | 23 | $1 \le N \le 2\,000$ |
| 4 | 51 | $1 \le N \le 500\,000$ |
样例
输入样例 1
4 2 1 2 2 3 3 4 1 4
输出样例 1
2 1 3
输入样例 2
9 5 1 2 2 3 3 4 3 5 1 6 1 7 7 8 8 9 2 5 6 7 9
输出样例 2
3 1 4 9
输入样例 3
20 9 1 2 2 3 2 4 4 5 4 6 5 7 7 8 8 9 7 10 10 11 6 12 6 13 6 17 13 14 14 15 14 16 17 18 18 19 18 20 1 3 9 11 12 15 16 19 20
输出样例 3
3 5 14 18
样例 3 说明
第三个样例的解释如下图所示: