#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 である頂点が根です。

各操作では、

  • 根にコインが置かれていない場合に、根に新しいコインを置く

もしくは

  • コインの置かれている頂点を 11 つ選んで、コインの置かれていない子のどれかにコインを移動する

のどちらかを行うことができます。

KK 回の操作のあと、MM枚 のコイン全てが木のどこかに置かれていなければなりません。

11 枚目に根に置いたコイン, 22 枚目に根に置いたコイン, ..., MM 枚目に根に置いたコイン の置かれている頂点を v1v_1, v2v_2, ..., vMv_M とします。

高橋君は、この列 v1v_1, v2v_2, ..., vMv_M のうち、辞書順で最小であるものが知りたくなりました。

高橋君のためにこの列を求めてあげてください。

u1u_1, u2u_2, ..., uMu_M が 列 v1v_1, v2v_2, ..., vMv_M より辞書順で小さいとは、ui<viu_i < v_i かつ 、全ての j<ij < iuj=vju_j = v_j が成り立つような 1leqileqM1 \\leq i \\leq M が存在する場合を言います。

ただし、ちょうど KK 回の操作を行えない場合や、MM 枚のコインを木に置けない場合は、\-1\-1 を出力してください。

制約

  • 1leqMleqNleq3001 \\leq M \\leq N \\leq 300
  • 0leqKleq1050 \\leq K \\leq 10^5
  • 0leqpileqN0 \\leq p_i \\leq N
  • pi=0p_i = 0 となる ii はただ 11 つ存在する
  • (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\\} の列を作ることができ、これより辞書順で小さい列を作ることはできません。

  • 11 枚目のコインを頂点 22 に置く

操作1

  • 11 枚目のコインを頂点 22 から 11 に動かす

操作2

  • 22 枚目のコインを頂点 22 に置く

操作3

  • 22 枚目のコインを頂点 22 から 33 に動かす

操作4

上の画像では、11 枚目のコインを赤、22 枚目のコインを青で表しています。


入力例 2

3 2 5
2 0 2

出力例 2

-1

55 回の操作を行うことが出来ないので、 \-1\-1 を出力してください。