#include <bits/stdc++.h>
using std::cerr;
using std::cin;
using std::max;
using std::min;
int n, a, b, ecnt, last[105], size[105], po[105], fac[105], inv[105],
    f[105][105][105], g[105][105], ans[105];
struct road {
  int to, nex;
} e[105 << 1];
void adde(int u, int v) { e[++ecnt] = (road){v, last[u]}, last[u] = ecnt; }
int cal(int x) {
  x -= x < 1000000007 ? 0 : 1000000007;
  return x;
}
int C(int x, int y) {
  return (long long)fac[x] * inv[y] % 1000000007 * inv[x - y] % 1000000007;
}
void dfs(int x, int fath = 0) {
  size[x] = 1, f[x][1][1] = 1;
  for (int k = last[x]; k; k = e[k].nex)
    if (e[k].to ^ fath) {
      dfs(e[k].to, x);
      for (int i = 1; i <= size[x]; i++)
        for (int j = 1; i + j - 1 <= size[x]; j++) {
          if (!f[x][i][j]) continue;
          for (int s = 1; s <= size[e[k].to]; s++)
            for (int l = 1; s + l - 1 <= size[e[k].to]; l++) {
              if (!f[e[k].to][s][l]) continue;
              g[i + s][j] =
                  cal(g[i + s][j] + (long long)f[x][i][j] * f[e[k].to][s][l] %
                                        1000000007 * l % 1000000007);
              g[i + s - 1][j + l] =
                  cal(g[i + s - 1][j + l] +
                      (long long)f[x][i][j] * f[e[k].to][s][l] % 1000000007);
            }
        }
      size[x] += size[e[k].to];
      for (int i = 1; i <= size[x]; i++)
        for (int j = 1; i + j - 1 <= size[x]; j++)
          f[x][i][j] = g[i][j], g[i][j] = 0;
    }
}
int main() {
  scanf("%d", &n);
  for (int i = 1; i < n; i++) scanf("%d%d", &a, &b), adde(a, b), adde(b, a);
  fac[0] = inv[0] = inv[1] = po[0] = 1;
  for (int i = 1; i < n; i++)
    fac[i] = (long long)fac[i - 1] * i % 1000000007,
    po[i] = (long long)po[i - 1] * n % 1000000007;
  for (int i = 2; i < n; i++)
    inv[i] = (long long)(1000000007 - 1000000007 / i) * inv[1000000007 % i] %
             1000000007;
  for (int i = 2; i < n; i++)
    inv[i] = (long long)inv[i - 1] * inv[i] % 1000000007;
  dfs(1);
  for (int i = 2; i <= n; i++) {
    for (int j = 1; i + j - 1 <= n; j++)
      ans[n - i] = cal(ans[n - i] + (long long)f[1][i][j] * j % 1000000007);
    ans[n - i] = (long long)ans[n - i] * po[i - 2] % 1000000007;
  }
  ans[n - 1] = 1;
  for (int i = n - 1; ~i; i--)
    for (int j = i + 1; j < n; j++)
      ans[i] =
          cal(ans[i] - (long long)ans[j] * C(j, i) % 1000000007 + 1000000007);
  for (int i = 0; i < n; i++) printf("%d ", ans[i]);
  puts("");
  return 0;
}
