给定一棵包含 $n$ 个顶点的无向无权树,顶点编号为 $1, 2, \dots, n$。在这棵树中选择了总共 $m$ 条简单路径,每条路径由其端点对 $(a_i, b_i)$ 描述。
令 $V$ 为树中所有顶点的集合。如果对于每个 $1 \le i \le m$,从 $a_i$ 到 $b_i$ 的简单路径至少包含 $S$ 中的一个顶点,则称 $V$ 的子集 $S$ 是“好的”。如果 $T$ 是一个好的子集,且不存在任何好的子集 $X$ 满足 $|X| < |T|$,则称 $T$ 为“最优子集”。
你需要找到 $V$ 的一个最优子集。
输入格式
第一行包含一个整数 $n$,表示树的顶点数 ($1 \le n \le 10^5$)。
接下来的 $n-1$ 行,每行描述树的一条边。第 $i$ 条边由两个整数 $u_i$ 和 $v_i$ 表示,为该边连接的顶点编号 ($1 \le u_i, v_i \le n, u_i \neq v_i$)。保证给定的边构成一棵树。
下一行包含一个整数 $m$,表示路径的数量 ($1 \le m \le 10^5$)。
接下来的 $m$ 行,每行描述树中的一条路径。第 $i$ 条路径由两个整数 $a_i$ 和 $b_i$ 表示,为路径端点的编号 ($1 \le a_i, b_i \le n$)。对于某些路径,可能存在 $a_i = b_i$ 的情况。不保证所有路径互不相同。
输出格式
第一行输出最优子集的大小。第二行以任意顺序输出属于最优子集的顶点编号。
如果有多种可能的解,输出其中任意一个即可。
样例
样例输入 1
4 1 2 2 3 2 4 2 1 2 4 2
样例输出 1
1 2
样例输入 2
6 1 2 2 3 3 4 5 6 5 2 5 2 1 6 6 1 4 3 4 4 1
样例输出 2
3 6 3 1