Tinkoff Internship Warmup Round 2018 and Codeforces Round 475 (Div. 2)
D
Destruction of a Tree
Codeforces
未评级
原题
← CE →
翻译中…

You are given a tree (a graph with $*n*$ vertices and $*n* - 1$ edges in which it's possible to reach any vertex from any other vertex using only its edges).

翻译中…

A vertex can be destroyed if this vertex has even degree. If you destroy a vertex, all edges connected to it are also deleted.

翻译中…

Destroy all vertices in the given tree or determine that it is impossible.

翻译中…

Input

翻译中…

The first line contains integer $*n*$ ($1 ≤ *n* ≤ 2·10^{5}$) — number of vertices in a tree.

翻译中…

The second line contains $*n*$ integers $*p*_{1}, *p*_{2}, ..., *p*_{*n*}$ ($0 ≤ *p*_{*i*} ≤ *n*$). If $*p*_{*i*} ≠ 0$ there is an edge between vertices $*i*$ and $*p*_{*i*}$. It is guaranteed that the given graph is a tree.

翻译中…

Output

翻译中…

If it's possible to destroy all vertices, print "YES" (without quotes), otherwise print "NO" (without quotes).

翻译中…

If it's possible to destroy all vertices, in the next $*n*$ lines print the indices of the vertices in order you destroy them. If there are multiple correct answers, print any.

翻译中…

Note

翻译中…

In the first example at first you have to remove the vertex with index 1 (after that, the edges (1, 2) and (1, 4) are removed), then the vertex with index 2 (and edges (2, 3) and (2, 5) are removed). After that there are no edges in the tree, so you can remove remaining vertices in any order.

翻译中…

image

翻译中…

样例

Input #1
5
0 1 2 1 2
Output #1
YES
1
2
3
5
4
InputCopy OutputCopy
Input #2
4
0 1 2 3
Output #2
NO
InputCopy OutputCopy
题目信息
题号
964D
时间限制
1 s
内存限制
256 MB

题面与样例版权归 Codeforces 及出题人所有;中文翻译由 AI 生成(CI 管线),如有出入请以原文为准。