AT_ajo2024_final_e Five Shuffles

Description

$ N $ 頂点の木があります。 頂点には $ 1 $ から $ N $ までの番号が付けられており、 $ i $ 番目の辺 $ (1 \leq i \leq N-1) $ は頂点 $ u_i $ と頂点 $ v_i $ を結んでいます。 また、各頂点には $ 1 $ 以上 $ N $ 以下の相異なる整数が書かれており、頂点 $ i $ $ (1 \leq i \leq N) $ に書かれた整数は $ p_i $ です。 AtCoder さんは、以下の**独立集合シャッフル**を高々 $ 5 $ 回行うことができます。 > **独立集合シャッフルとは** > > 木の各頂点をすべて白で塗った後、以下の 1 と 2 をその順に行う。 > > 1. 木のいくつかの頂点を黒で塗る。ただし、辺で隣接する $ 2 $ つの頂点の両方を黒で塗ってはならない。 > 2. 黒で塗られた頂点に書かれた整数を並べ替える。 操作の後、少なくとも $ N-2 $ 個の頂点について、頂点 $ i $ $ (1 \leq i \leq N) $ に書かれた整数を $ i $ にすることができればお金がもらえます。 そのような方法を $ 1 $ つ求めてください。 ただし、本問題の制約下では、必ず答えが存在することが証明できます。

Input Format

入力は以下の形式で標準入力から与えられます。 > $ N $ $ u_1 $ $ v_1 $ $ u_2 $ $ v_2 $ $ \vdots $ $ u_{N-1} $ $ v_{N-1} $ $ p_1 $ $ p_2 $ $ \cdots $ $ p_N $

Output Format

以下の形式で答えを出力してください。 ただし、行う独立集合シャッフルの回数を $ K $ $ (\leq 5) $ 、 $ i $ 回目の独立集合シャッフルの直後に頂点 $ j $ に書かれた整数を $ a_{i,j} $ とします。 ここで、**操作回数を最小化する必要はありません。** > $ K $ $ a_{1,1} $ $ a_{1,2} $ $ \cdots $ $ a_{1,N} $ $ a_{2,1} $ $ a_{2,2} $ $ \cdots $ $ a_{2,N} $ $ \vdots $ $ a_{K,1} $ $ a_{K,2} $ $ \cdots $ $ a_{K,N} $

Explanation/Hint

### Sample Explanation 1 たとえば下図のように操作を行うと、 $ 5 $ 回以内の独立集合シャッフルで目的を達成することができます。 なお、 $ N $ 頂点すべてについて頂点 $ i $ に書かれた整数を $ i $ にする必要はないことに注意してください。 ![ ](https://cdn.luogu.com.cn/upload/vjudge_pic/AT_ajo2024_final_e/e9453ced34dafba3e63237fc571d8c5c00a2711eff2666f681ccef936a81a4c2.png) ### Sample Explanation 2 たとえば下図のように操作を行うと、 $ 5 $ 回以内の独立集合シャッフルで目的を達成することができます。 ![ ](https://cdn.luogu.com.cn/upload/vjudge_pic/AT_ajo2024_final_e/b83d4ca6111427de8675ae43effce66b9fac4f01e6b832cfab93f60379a79114.png) ### Constraints - $ 3 \leq N \leq 150\,000 $ - $ 1 \leq u_i < v_i \leq N $ - $ 1 \leq p_i \leq N $ - $ p_1, p_2, \dots, p_N $ はすべて異なる - 入力で与えられるグラフは木である - 入力はすべて整数