考虑一个包含 $n$ 个顶点的集合 $V = \{1, \dots, n\}$ 以及一个有向边序列 $e_1, \dots, e_{n-1}$。令 $G_0, \dots, G_{n-1}$ 为一个图序列,其中 $G_0$ 为空图,对于每个 $i = 1, \dots, n-1$,$G_i$ 是通过将边 $e_i$ 加入 $G_{i-1}$ 得到的。保证 $G_{n-1}$ 是一棵所有边均背离根节点的有向树。
你的任务是找到集合 $\{1, \dots, n\}$ 的一个合适排列 $p_1, \dots, p_n$。令 $S_i(v) = \{p_u \mid u \text{ 在 } G_i \text{ 中可从 } v \text{ 到达}\}$。如果对于任意 $i \in \{0, \dots, n-1\}$ 以及任意 $v \in V$,集合 $S_i(v)$ 均由连续的整数组成(即对于某些整数 $l$ 和 $r$,有 $S_i(v) = \{l, l+1, \dots, r\}$),则称该排列 $p_1, \dots, p_n$ 是合适的。
输入格式
第一行包含一个整数 $n$ ($2 \le n \le 10^6$)。
接下来的 $n-1$ 行描述了边 $e_1, \dots, e_{n-1}$。第 $i$ 行包含两个整数 $u_i$ 和 $v_i$,分别表示边 $e_i$ 的起点和终点索引 ($1 \le u_i, v_i \le n$)。
保证加入所有 $n-1$ 条边后会形成一棵所有边均背离根节点的有向树。
输出格式
如果不存在合适的排列,仅输出一行 “No”。
否则,第一行输出 “Yes”。第二行输出 $n$ 个整数 $p_1, \dots, p_n$,描述任意一个合适的排列。
样例
样例输入 1
4 3 1 1 4 1 2
样例输出 1
Yes 3 1 4 2
样例输入 2
7 1 2 1 3 1 4 2 5 3 6 4 7
样例输出 2
No