output_description: For each k=1, 2, ..., N in this order, print a line containing the answer to
  the problem.
  
  * * *
input_description: Input is given from Standard Input in the following format:
  
      
      
      N
      a_1 b_1
      :
      a_{N-1} b_{N-1}
attempt: from collections import deque
  
  
  mod = 10**9 + 7
  SIZE = 2 * 10**5 + 1
  fact = [0] * SIZE
  inv = [0] * SIZE
  finv = [0] * SIZE
  fact[0], fact[1] = 1, 1
  inv[1] = 1
  finv[0], finv[1] = 1, 1
  for i in range(2, SIZE):
      fact[i] = fact[i - 1] * i % mod
      inv[i] = mod - inv[mod % i] * (mod // i) % mod
      finv[i] = finv[i - 1] * inv[i] % mod
  
  
  def nCr(n, r):
      if n < 0 or r < 0 or n < r:
          return 0
      return fact[n] * (finv[r] * finv[n - r] % mod) % mod
  
  
  n = int(input())
  edges = [[] for _ in range(n)]
  
  for _ in range(n - 1):
      a, b = map(int, input().split())
      edges[a - 1].append(b - 1)
      edges[b - 1].append(a - 1)
  
  root_to_leaf = []
  parents = [0] * n
  
  todo = deque([])
  for to in edges[0]:
      todo.append([to, 0])
  
  while todo:
      node, parent = todo.popleft()
      root_to_leaf.append(node)
      parents[node] = parent
  
      for to in edges[node]:
          if to == parent:
              continue
          todo.append([to, node])
  
  size_of_subtree = [0] * n
  pattern_in_subtree = [1] * n
  
  for node in root_to_leaf[::-1]:
      parent = parents[node]
      size_of_subtree[node] += 1
      size_of_subtree[parent] += size_of_subtree[node]
      pattern_in_subtree[parent] *= (
          nCr(size_of_subtree[parent], size_of_subtree[node])
          * pattern_in_subtree[node]
          % mod
      )
      pattern_in_subtree[parent] %= mod
  
  answers = [0] * n
  answers[0] = pattern_in_subtree[0]
  
  for node in root_to_leaf:
      parent = parents[node]
      ans = answers[parent] * size_of_subtree[node] * inv[n - size_of_subtree[node]] % mod
      answers[node] = ans
  
  for ans in answers:
      print(ans)
  
problem_description: Statement
  
  We have a tree with N vertices numbered 1 to N. The i-th edge in this tree
  connects Vertex a_i and b_i. For each k=1, ..., N, solve the problem below:
  
    * Consider writing a number on each vertex in the tree in the following manner:
      * First, write 1 on Vertex k.
      * Then, for each of the numbers 2, ..., N in this order, write the number on the vertex chosen as follows:
        * Choose a vertex that still does not have a number written on it and is adjacent to a vertex with a number already written on it. If there are multiple such vertices, choose one of them at random.
    * Find the number of ways in which we can write the numbers on the vertices, modulo (10^9+7).
samples: [{"input": "3\n    1 2\n    1 3", "output": "2\n    1\n    1\n    \n\nThe graph in this input is as follows:\n\n![Figure](https://img.atcoder.jp/ghi/1c88b0eb716ba399b1c5d6565ab62337.png)\n\nFor k=1, there are two ways in which we can write the numbers on the vertices,\nas follows:\n\n  * Writing 1, 2, 3 on Vertex 1, 2, 3, respectively\n  * Writing 1, 3, 2 on Vertex 1, 2, 3, respectively\n\n* * *"}, {"input": "2\n    1 2", "output": "1\n    1\n    \n\nThe graph in this input is as follows:\n\n![Figure](https://img.atcoder.jp/ghi/c47c7798f88e7bfec30fbd664dc9ad50.png)\n\n* * *"}, {"input": "5\n    1 2\n    2 3\n    3 4\n    3 5", "output": "2\n    8\n    12\n    3\n    3\n    \n\nThe graph in this input is as follows:\n\n![Figure](https://img.atcoder.jp/ghi/e9c09403f8d96ae4e679a226993defa6.png)\n\n* * *"}, {"input": "8\n    1 2\n    2 3\n    3 4\n    3 5\n    3 6\n    6 7\n    6 8", "output": "40\n    280\n    840\n    120\n    120\n    504\n    72\n    72\n    \n\nThe graph in this input is as follows:\n\n![Figure](https://img.atcoder.jp/ghi/a85459a03d436560bfe2e911d8cec4e6.png)"}]