#include <bits/stdc++.h>
const int MN = 100 + 5, P = 1000000007;
using namespace std;
template <typename T>
inline T& IN(T& in) {
  in = 0;
  char c = getchar();
  int f = 1;
  while (!isdigit(c)) {
    if (c == '-') f = -1;
    c = getchar();
  }
  while (isdigit(c)) in = in * 10 + c - '0', c = getchar();
  return in *= f;
}
int n, k;
long long f[MN][MN][MN], g[MN][MN], ans[MN];
int sz[MN];
long long fac[1010], ifac[1100];
int nxt[MN * 2], to[MN * 2], h[MN], cnt;
long long C(int n, int m) { return fac[n] * ifac[m] % P * ifac[n - m] % P; }
long long qp(long long a, long long b) {
  long long c = 1;
  for (; b; b >>= 1, a = a * a % P)
    if (b & 1) c = c * a % P;
  return c;
}
void add(int u, int v) { to[cnt] = v, nxt[cnt] = h[u], h[u] = cnt++; }
void make() {
  int N = 1000;
  fac[0] = 1;
  for (int i = 1; i <= N; ++i) fac[i] = fac[i - 1] * i % P;
  ifac[N] = qp(fac[N], P - 2);
  for (int i = N; i >= 1; --i) ifac[i - 1] = ifac[i] * i % P;
}
void dfs(int u, int pa) {
  f[u][1][1] = 1;
  sz[u] = 1;
  for (int e = h[u], v = to[e]; ~e; e = nxt[e], v = to[e])
    if (v ^ pa) {
      dfs(v, u);
      for (int i = 0; i <= sz[u] + sz[v]; ++i)
        for (int j = 0; j <= sz[u] + sz[v]; ++j) g[i][j] = 0;
      for (int i = 1; i <= sz[u]; ++i)
        for (int j = 1; j <= sz[u] - i + 1; ++j)
          if (f[u][i][j])
            for (int k = 1; k <= sz[v]; ++k)
              for (int l = 1; l <= sz[v] - k + 1; ++l)
                if (f[v][k][l])
                  g[i + k - 1][j + l] =
                      (g[i + k - 1][j + l] + f[u][i][j] * f[v][k][l] % P) % P,
                                   g[i + k][j] =
                                       (g[i + k][j] +
                                        f[u][i][j] * f[v][k][l] % P * l % P) %
                                       P;
      sz[u] += sz[v];
      for (int i = 1; i <= sz[u]; ++i)
        for (int j = 1; j <= sz[u]; ++j) f[u][i][j] = g[i][j];
    }
}
void input() {
  make();
  IN(n);
  memset(h, -1, sizeof h);
  for (int i = 1, u, v; i < n; ++i) IN(u), IN(v), add(u, v), add(v, u);
  dfs(1, 0);
  for (int i = 1; i <= n; ++i) {
    for (int j = 1; j <= n - i + 1; ++j)
      ans[n - i] = (ans[n - i] + f[1][i][j] * j % P) % P;
    ans[n - i] = ans[n - i] * qp(n, (long long)i - 2 + P - 1) % P;
  }
  for (int i = n - 1; i >= 0; --i)
    for (int j = i + 1; j <= n - 1; ++j)
      ans[i] = (ans[i] - ans[j] * C(j, i) % P + P) % P;
  for (int i = 0; i < n; ++i) printf("%lld ", ans[i]);
}
int main() {
  make();
  input();
  return 0;
}
