给定一棵有 $N$ 个顶点的有根树。顶点编号为 $0, 1, \dots, N-1$。根节点为顶点 $0$,顶点 $i$ ($i = 1, 2, \dots, N-1$) 的父节点为 $p_i$。
初始时,顶点 $i$ 上写有一个整数 $a_i$。其中 $(a_0, a_1, \dots, a_{N-1})$ 是 $(0, 1, \dots, N-1)$ 的一个排列。
你可以执行以下操作至多 $25\,000$ 次。目标是使得顶点 $i$ 上的值等于 $i$。
- 选择一个顶点,记为 $v$。考虑连接顶点 $0$ 和 $v$ 的路径。
- 对路径上的值进行旋转。具体来说,对于路径上的每一条边 $(i, p_i)$,将顶点 $p_i$ 上的值替换为顶点 $i$ 上的值(操作前的值),并将顶点 $v$ 上的值替换为顶点 $0$ 上的值(操作前的值)。
- 你可以选择顶点 $0$,此时操作不产生任何效果。
输入格式
输入按以下格式给出:
$N$ $p_1 \ p_2 \ \dots \ p_{N-1}$ $a_0 \ a_1 \ \dots \ a_{N-1}$
数据范围: $2 \le N \le 2000$,$0 \le p_i \le i-1$,$(a_0, a_1, \dots, a_{N-1})$ 是 $(0, 1, \dots, N-1)$ 的一个排列。
输出格式
在第一行,输出操作次数 $Q$。在接下来的 $Q$ 行中,按顺序输出所选的顶点。
样例
样例输入 1
5 0 1 2 3 2 4 0 1 3
样例输出 1
2 3 4
样例输入 2
5 0 1 2 2 4 3 1 2 0
样例输出 2
3 4 3 1
说明
在样例 1 中,第一次操作后,顶点 $0, 1, \dots, 4$ 上的值分别为 $4, 0, 1, 2, 3$。
在样例 2 中,第一次操作后,顶点 $0, 1, \dots, 4$ 上的值分别为 $3, 1, 0, 2, 4$。第二次操作后,顶点 $0, 1, \dots, 4$ 上的值分别为 $1, 0, 2, 3, 4$。