output_description: 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.
  
  * * *
input_description: 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}
attempt: N = int(input())
  edges = []
  three = []
  result = ""
  
  for i in range(N - 1):
      edges.append(list(map(int, input().split())))
      edges[i].append(1)
  # print(edges)
  
  
  def BFS(K, w, edges, N):
      roots = [[] for i in range(N)]
      for a, b, c in edges:
          roots[a - 1] += [(b - 1, c)]
          roots[b - 1] += [(a - 1, c)]
      dist = [-1] * N
      stack = []
      stack.append(K)
      dist[K] = 0
      while stack:
          label = stack.pop(-1)
          for i, c in roots[label]:
              if dist[i] == -1:
                  dist[i] = dist[label] + c
                  stack += [i]
              if i == w:
                  return dist[w]
  
  
  for i in range(1, N + 1):
      for j in range(1, N + 1):
          # print(i,j)
          if i == j:
              break
          distance = BFS(i - 1, j - 1, edges, N)
          # print(distance,":",i,",",j)
          if distance == 3:
              three.append([i, j])
  # print(three)
  vertex = []
  for i in range(1, N + 1):
      vertex.append(i)
  
  
  def chk(a, b):
      # 掛けたら3の倍数か
      if (a * b) % 3 == 0:
          return True
      # 足したら3の倍数か
      if (a + b) % 3 == 0:
          return True
      # 距離3に含まれているか
      for th in three:
          if (th[0] == a and th[1] == b) or (th[0] == b and th[1] == a):
              return True
      return False
  
  
  import itertools
  
  itert = itertools.permutations(vertex)
  for i in itert:
      # print(i)
      for j in range(N - 1):
          if chk(i[j], i[j + 1]):
              flg = True
              for k in range(N):
                  if flg:
                      result += str(i[k])
                  else:
                      result += " " + str(i[k])
              print(result)
              exit()
  print(-1)
  """
  7
  2 3
  5 3
  3 4
  3 1
  4 6
  4 7
  """
  
problem_description: 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.
samples: [{"input": "5\n    1 2\n    1 3\n    3 4\n    3 5", "output": "1 2 5 4 3 \n    \n\nThe distance between two vertices is 3 for the two pairs (2, 4) and (2, 5).\n\n  * p_2 + p_4 = 6\n  * p_2\\times p_5 = 6\n\nThus, this permutation satisfies the condition."}]