#include <bits/stdc++.h>
using namespace std;
const int N = 102, mod = int(1e9) + 7;
long long d[N][N][N], c[N][N], tmp[N][N], first[N];
int sz[N];
vector<int> g[N];
int n;
void add(long long &a, int b) {
  a += b;
  if (a >= mod) a -= mod;
}
void dfs(int v, int p = -1) {
  d[v][0][1] = 1;
  sz[v] = 1;
  for (int i = 0; i < g[v].size(); i++) {
    int to = g[v][i];
    if (to == p) continue;
    dfs(to, v);
    memset(tmp, 0, sizeof(tmp));
    for (int x = 0; x <= sz[v]; x++) {
      for (int a = 1; a <= sz[v]; a++) {
        for (int y = 0; y <= sz[to]; y++) {
          for (int b = 1; b <= sz[to]; b++) {
            int res = d[v][x][a] * d[to][y][b] % mod;
            add(tmp[x + y + 1][a + b], res);
            add(tmp[x + y][a], 1ll * res * b % mod);
          }
        }
      }
    }
    sz[v] += sz[to];
    for (int x = 0; x <= sz[v]; x++) {
      for (int a = 1; a <= sz[v]; a++) {
        d[v][x][a] = tmp[x][a];
      }
    }
  }
}
long long modpow(long long a, long long b) {
  long long res = 1;
  while (b) {
    if (b & 1) res = res * a % mod;
    a = a * a % mod;
    b >>= 1;
  }
  return res;
}
int main() {
  scanf("%d", &n);
  for (int i = 1, a, b; i < n; i++) {
    scanf("%d%d", &a, &b);
    g[a].push_back(b);
    g[b].push_back(a);
  }
  dfs(1);
  first[n - 1] = 1;
  c[0][0] = 1;
  for (int i = 1; i <= n; i++) {
    c[i][0] = c[i][i] = 1;
    for (int j = 1; j < i; j++) {
      c[i][j] = (c[i - 1][j] + c[i - 1][j - 1]) % mod;
    }
  }
  for (int i = n - 2; i >= 0; i--) {
    long long res = modpow(n, n - i - 2);
    for (int j = 1; j <= n; j++) {
      first[i] = (first[i] + res * d[1][i][j] % mod * j) % mod;
    }
    for (int j = i + 1; j <= n - 1; j++) {
      first[i] = (first[i] - first[j] * c[j][i] % mod + mod) % mod;
    }
  }
  for (int i = 0; i < n; i++) {
    printf("%lld ", first[i]);
  }
  return 0;
}
