#codethanksfestival2018f. [code_thanks_festival_2018_f]Coins on the tree

[code_thanks_festival_2018_f]Coins on the tree

问题描述

高桥君在一棵由 NN 个顶点组成的有根树上,使用 MM 枚硬币进行恰好 KK 次操作。

给定这棵树,其中顶点 ii 的父节点是 pip_i,根节点的 pi=0p_i = 0

每次操作可以进行以下两种中的一种:

  • 如果根节点没有硬币,则将一个硬币放在根节点上;
  • 选择一个有硬币的顶点,并将硬币移动到它的一个空子节点上。

经过 KK 次操作后,所有 MM 枚硬币必须放置在树的某个位置。

将第一枚硬币放置在根节点,第二枚硬币放置在根节点,......,将第 MM 枚硬币放置在根节点,则它们所在的顶点分别为 v1v_1, v2v_2, ..., vMv_M

高桥君想知道在这些顶点 v1v_1, v2v_2, ..., vMv_M 中,最小的字典序是哪一个。

请帮助高桥君求出这个顺序。

如果无法进行恰好 KK 次操作或者无法将 MM 枚硬币放置在树上,则输出 1-1

约束条件

  • 1MN3001 \leq M \leq N \leq 300
  • 0K1050 \leq K \leq 10^5
  • 0piN0 \leq p_i \leq N
  • 仅存在一个 ii 使得 pi=0p_i = 0
  • 连通图由边 (i,pi)(i, p_i) 构成一颗树
  • 所有输入为整数

输入

输入从标准输入中获取,并具有以下格式。

NN MM KK

p1p_1 p2p_2 ... pN1p_{N-1} pNp_N

输出

在进行了 KK 次操作后,如果可以将所有 MM 枚硬币放置在树上,则输出如下:

v1v_1 v2v_2 ... vM1v_{M-1} vMv_M

如果无法实现,则输出 1-1


示例 1

3 2 4
2 0 2

输出示例 1

1 3

通过以下操作,可以创建顺序为 1,3\\{1, 3\\} 的序列,并且无法创建比这更小的序列:

  • 将第一枚硬币放置在顶点 22

操作1

  • 将第一枚硬币从顶点 22 移动到顶点 11

操作2

  • 将第二枚硬币放置在顶点 22

操作3

  • 将第二枚硬币从顶点 22 移动到顶点 33

操作4

在上面的图像中,用红色表示第一枚硬币,用蓝色表示第二枚硬币。


示例 2

3 2 5
2 0 2

输出示例 2

-1

无法进行 55 次操作,因此输出 1-1