#include <bits/stdc++.h>
using namespace std;
const int MX = 105, mod = 1000000007;
int n, sz[MX];
long long dp[MX][MX][MX], aux[MX][MX], fac[MX], inv[MX], res[MX];
vector<int> adj[MX];
long long pot(long long b, int p) {
  if (p < 0) return pot(pot(b, -p), mod - 2);
  long long res = 1;
  while (p) {
    if (p & 1) (res *= b) %= mod;
    (b *= b) %= mod;
    p /= 2;
  }
  return res;
}
long long comb(int n, int k) {
  return fac[n] * inv[k] % mod * inv[n - k] % mod;
}
void dfs(int u, int p = -1) {
  dp[u][0][1] = 1;
  sz[u] = 1;
  for (int v : adj[u]) {
    if (v == p) continue;
    dfs(v, u);
    for (int i = 0; i < sz[u] + sz[v]; i++)
      for (int j = 0; j < sz[u] + sz[v] + 1; j++) aux[i][j] = 0;
    for (int i = 0; i < sz[u]; i++)
      for (int j = 0; j < sz[u] + 1; j++)
        for (int x = 0; x < sz[v]; x++)
          for (int y = 0; y < sz[v] + 1; y++) {
            long long c = dp[u][i][j] * dp[v][x][y] % mod;
            (aux[i + x + 1][j + y] += c) %= mod;
            (aux[i + x][j] += c * y) %= mod;
          }
    for (int i = 0; i < sz[u] + sz[v]; i++)
      for (int j = 0; j < sz[u] + sz[v] + 1; j++) dp[u][i][j] = aux[i][j];
    sz[u] += sz[v];
  }
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  fac[0] = inv[0] = 1;
  for (int i = 1; i < MX; i++) {
    fac[i] = fac[i - 1] * i % mod;
    inv[i] = pot(fac[i], mod - 2);
  }
  cin >> n;
  for (int i = 0; i < n - 1; i++) {
    int u, v;
    cin >> u >> v;
    adj[u].push_back(v);
    adj[v].push_back(u);
  }
  dfs(1);
  for (int i = n - 1; i >= 0; i--) {
    for (int j = 1; j <= n; j++) (res[i] += dp[1][i][j] * j) %= mod;
    (res[i] *= pot(n, n - i - 2)) %= mod;
    for (int j = n - 1; j > i; j--) (res[i] -= res[j] * comb(j, i)) %= mod;
  }
  for (int i = 0; i < n; i++)
    cout << ((((res[i]) % (mod)) + (mod)) % (mod)) << " ";
  cout << '\n';
  return 0;
}
