#include <bits/stdc++.h>
using namespace std;
#pragma GCC optimize("O2,no-stack-protector,unroll-loops,fast-math")
const long long maxn = 1e2 + 10, maxm = 1e3 + 10, lg = 21, mod = 1e9 + 7,
                inf = 1e18;
long long pwm(long long a, long long b) {
  if (b == 0) return 1;
  if (b % 2) return a * pwm(a, b - 1) % mod;
  long long ret = pwm(a, b / 2);
  return ret * ret % mod;
}
void add(long long &x, long long y) {
  x += y;
  if (x >= mod) x -= mod;
  if (x < 0) x += mod;
}
long long n, dp[maxn][maxn][maxn], tmp[maxn][maxn], sz[maxn], I[maxn],
    ans[maxn], C[maxn][maxn];
vector<long long> g[maxn];
void dfs(long long v = 1, long long p = 0) {
  dp[v][sz[v] = 1][0] = 1;
  for (auto u : g[v])
    if (u != p) {
      dfs(u, v);
      for (int ev = 0; ev < sz[v]; ev++)
        for (int eu = 0; eu < sz[u]; eu++)
          for (int sv = 1; sv <= sz[v]; sv++)
            for (int su = 1; su <= sz[u]; su++) {
              long long X = dp[v][sv][ev] * dp[u][su][eu] % mod;
              add(tmp[sv][ev + eu], X);
              add(tmp[sv + su][ev + eu + 1],
                  X * I[sv] % mod * I[su] % mod * (sv + su) % mod);
            }
      sz[v] += sz[u];
      for (int e = 0; e < sz[v]; e++)
        for (int s = 1; s <= sz[v]; s++) dp[v][s][e] = tmp[s][e], tmp[s][e] = 0;
    }
}
int main() {
  ios_base::sync_with_stdio(0), cin.tie(0), cout.tie(0);
  C[0][0] = 1;
  for (int i = 1; i < maxn; i++) {
    C[i][0] = 1;
    for (int j = 0; j <= i; j++)
      C[i][j] = (C[i - 1][j - 1] + C[i - 1][j]) % mod;
  }
  for (int i = 1; i < maxn; i++) I[i] = pwm(i, mod - 2);
  cin >> n;
  for (int i = 1; i < n; i++) {
    long long v, u;
    cin >> v >> u;
    g[v].push_back(u), g[u].push_back(v);
  }
  dfs();
  ans[n - 1] = 1;
  for (int k = n - 2; k >= 0; k--) {
    for (int s = 1; s <= n; s++) add(ans[k], dp[1][s][k]);
    ans[k] *= pwm(n, n - k - 2), ans[k] %= mod;
    for (int j = k + 1; j < n; j++) add(ans[k], -(ans[j] * C[j][k] % mod));
  }
  for (int i = 0; i < n; i++) cout << ans[i] << ' ';
  return 0;
}
