#codethanksfestival2018f. [code_thanks_festival_2018_f]Coins on the tree
[code_thanks_festival_2018_f]Coins on the tree
問題文
高橋君は、 頂点から成る根付き木上で、 枚のコインを使って以下の操作をちょうど 回行おうとしています。
この木は、頂点 の親が であるものとして与えられます。 である頂点が根です。
各操作では、
- 根にコインが置かれていない場合に、根に新しいコインを置く
もしくは
- コインの置かれている頂点を つ選んで、コインの置かれていない子のどれかにコインを移動する
のどちらかを行うことができます。
回の操作のあと、枚 のコイン全てが木のどこかに置かれていなければなりません。
枚目に根に置いたコイン, 枚目に根に置いたコイン, ..., 枚目に根に置いたコイン の置かれている頂点を , , ..., とします。
高橋君は、この列 , , ..., のうち、辞書順で最小であるものが知りたくなりました。
高橋君のためにこの列を求めてあげてください。
列 , , ..., が 列 , , ..., より辞書順で小さいとは、 かつ 、全ての で が成り立つような が存在する場合を言います。
ただし、ちょうど 回の操作を行えない場合や、 枚のコインを木に置けない場合は、 を出力してください。
制約
- となる はただ つ存在する
- に辺を張ってできるグラフは木を成す
- 入力は全て整数である
入力
入力は以下の形式で標準入力から与えられる。
...
出力
回の操作後、 枚のコインが全て置かれているように出来る場合は、
...
のように、不可能な場合は を出力せよ。
入力例 1
3 2 4
2 0 2
出力例 1
1 3
次ののように操作を行うことで の列を作ることができ、これより辞書順で小さい列を作ることはできません。
- 枚目のコインを頂点 に置く
- 枚目のコインを頂点 から に動かす
- 枚目のコインを頂点 に置く
- 枚目のコインを頂点 から に動かす
上の画像では、 枚目のコインを赤、 枚目のコインを青で表しています。
入力例 2
3 2 5
2 0 2
出力例 2
-1
回の操作を行うことが出来ないので、 を出力してください。