C - ThREE /

Time Limit: 2 sec / Memory Limit: 1024 MB

配点 : 600

問題文

N 頂点の木があります。頂点には 1 から N までの番号がついており、 i 番目の辺は頂点 a_i と頂点 b_i を結んでいます。

3 が大好きな高橋くんは、以下の条件を満たす 1 から N までの整数の順列 p_1, p_2, \ldots , p_N を探しています。

  • すべての頂点の組 (i, j) について、頂点 i と頂点 j の距離が 3 であるならば、p_ip_j の和または積が 3 の倍数である。

ただし、頂点 i と頂点 j の距離とは、頂点 i から頂点 j へ最短経路で移動するときに使用する辺の個数のことを指します。

高橋くんのために条件を満たす順列を 1 つ見つけてください。

制約

  • 2\leq N\leq 2\times 10^5
  • 1\leq a_i, b_i \leq N
  • 与えられるグラフは木である

入力

入力は以下の形式で標準入力から与えられる。

N
a_1 b_1
a_2 b_2
\vdots
a_{N-1} b_{N-1}

出力

問題の条件を満たす順列が存在しない場合は -11 行に出力せよ。

存在する場合、条件を満たす順列の 1 つを空白区切りで 1 行に出力せよ。


入力例 1

5
1 2
1 3
3 4
3 5

出力例 1

1 2 5 4 3 

距離が 3 である頂点の組は (2, 4)(2, 5)2 つです。

  • p_2 + p_4 = 6
  • p_2\times p_5 = 6

であるため、この順列は条件を満たします。

Score : 600 points

Problem Statement

We have a tree with N vertices. The vertices are numbered 1 to N, and the i-th edge connects Vertex a_i and Vertex b_i.

Takahashi loves the number 3. He is seeking a permutation p_1, p_2, \ldots , p_N of integers from 1 to N satisfying the following condition:

  • For every pair of vertices (i, j), if the distance between Vertex i and Vertex j is 3, the sum or product of p_i and p_j is a multiple of 3.

Here the distance between Vertex i and Vertex j is the number of edges contained in the shortest path from Vertex i to Vertex j.

Help Takahashi by finding a permutation that satisfies the condition.

Constraints

  • 2\leq N\leq 2\times 10^5
  • 1\leq a_i, b_i \leq N
  • The given graph is a tree.

Input

Input is given from Standard Input in the following format:

N
a_1 b_1
a_2 b_2
\vdots
a_{N-1} b_{N-1}

Output

If no permutation satisfies the condition, print -1.

Otherwise, print a permutation satisfying the condition, with space in between. If there are multiple solutions, you can print any of them.


Sample Input 1

5
1 2
1 3
3 4
3 5

Sample Output 1

1 2 5 4 3 

The distance between two vertices is 3 for the two pairs (2, 4) and (2, 5).

  • p_2 + p_4 = 6
  • p_2\times p_5 = 6

Thus, this permutation satisfies the condition.