#include <bits/stdc++.h>
using namespace std;
const int N = 105, mod = 1e9 + 7;
int n, head[N], nxt[N << 1], to[N << 1], num = 0, sz[N], f[N][N][N], dp[N][N];
int c[N][N], g[N], bin[N];
inline void link(int x, int y) {
  nxt[++num] = head[x];
  to[num] = y;
  head[x] = num;
}
inline void dfs(int x, int last) {
  sz[x] = f[x][1][0] = 1;
  for (int P = head[x]; P; P = nxt[P]) {
    int u = to[P];
    if (u == last) continue;
    dfs(u, x);
    for (int i = 1; i <= sz[x]; i++)
      for (int j = 1; j <= sz[u]; j++)
        for (int k = 0; k < sz[x]; k++)
          for (int l = 0; l < sz[u]; l++) {
            dp[i + j][k + l + 1] =
                (dp[i + j][k + l + 1] + 1ll * f[x][i][k] * f[u][j][l]) % mod;
            dp[i][k + l] =
                (dp[i][k + l] + 1ll * f[x][i][k] * f[u][j][l] % mod * j) % mod;
          }
    sz[x] += sz[u];
    for (int i = 1; i <= sz[x]; i++)
      for (int j = 0; j < sz[x]; j++) f[x][i][j] = dp[i][j], dp[i][j] = 0;
  }
}
int main() {
  scanf("%d", &n);
  int x, y;
  for (int i = 1; i < n; i++) {
    scanf("%d%d", &x, &y);
    link(x, y);
    link(y, x);
  }
  dfs(1, 1);
  for (int i = 1; i <= n; i++)
    for (int j = 1; j < n; j++) g[j] = (g[j] + 1ll * i * f[1][i][j]) % mod;
  bin[0] = 1;
  for (int i = 1; i <= n; i++) bin[i] = 1ll * bin[i - 1] * n % mod;
  for (int i = 0; i <= n; i++) {
    c[i][0] = 1;
    for (int j = 1; j <= i; j++)
      c[i][j] = (c[i - 1][j - 1] + c[i - 1][j]) % mod;
  }
  g[n - 1] = g[0] = 1;
  for (int i = 0; i < n - 1; i++) g[i] = 1ll * g[i] * bin[n - i - 2] % mod;
  for (int i = n - 1; i >= 0; i--) {
    for (int j = i + 1; j < n; j++) g[i] = (g[i] - 1ll * g[j] * c[j][i]) % mod;
  }
  for (int i = 0; i < n; i++) printf("%d ", (g[i] + mod) % mod);
  return 0;
}
