#include <bits/stdc++.h>
using namespace std;
const int _ = 1e2;
const int maxn = 110;
const int mod = 1e9 + 7;
inline int ad(int x, int y) { return x >= mod - y ? x - mod + y : x + y; }
inline int re(int x, int y) { return x < y ? x - y + mod : x - y; }
inline int mu(int x, int y) { return (long long)x * y % mod; }
inline int qp(int x, long long y) {
  if (y == -1) return 1;
  int r = 1;
  while (y) {
    if (y & 1) r = mu(r, x);
    x = mu(x, x);
    y >>= 1;
  }
  return r;
}
inline int iv(int x) { return qp(x, mod - 2); }
inline int dv(int x, int y) { return mu(x, qp(y, mod - 2)); }
struct node {
  int y, next;
} a[2 * maxn];
int len, last[maxn];
void ins(int x, int y) {
  a[++len].y = y;
  a[len].next = last[x];
  last[x] = len;
}
int f[maxn][maxn][maxn], tot[maxn], t[maxn][maxn];
void dfs(int x, int fr) {
  f[x][0][1] = 1;
  tot[x] = 1;
  for (int k = last[x]; k; k = a[k].next) {
    int y = a[k].y;
    if (y != fr) {
      dfs(y, x);
      for (int i = tot[x] - 1; i >= 0; i--)
        for (int u = tot[x]; u >= 1; u--)
          for (int j = tot[y] - 1; j >= 0; j--)
            for (int v = tot[y]; v >= 1; v--) {
              t[i + j][u + v] = ad(t[i + j][u + v], mu(f[x][i][u], f[y][j][v]));
              t[i + j + 1][u] =
                  ad(t[i + j + 1][u], mu(mu(f[x][i][u], f[y][j][v]), v));
            }
      tot[x] += tot[y];
      for (int i = tot[x] - 1; i >= 0; i--)
        for (int u = tot[x]; u >= 1; u--) f[x][i][u] = t[i][u], t[i][u] = 0;
    }
  }
}
int as[maxn], C[maxn][maxn];
int main() {
  int n, x, y;
  scanf("%d", &n);
  for (int i = 0; i <= n; i++) {
    C[i][0] = 1;
    for (int j = 1; j <= i; j++) C[i][j] = ad(C[i - 1][j - 1], C[i - 1][j]);
  }
  for (int i = 1; i < n; i++) {
    scanf("%d%d", &x, &y);
    ins(x, y), ins(y, x);
  }
  dfs(1, 0);
  as[1] = 1;
  for (int i = 2; i <= n; i++) {
    for (int j = 1; j <= n; j++) as[i] = ad(as[i], mu(f[1][i - 1][j], j));
    as[i] = mu(qp(n, i - 2), as[i]);
  }
  for (int i = n; i >= 1; i--) {
    for (int j = i - 1; j >= 1; j--)
      if ((i - j) & 1)
        as[i] = re(as[i], mu(C[n - j][n - i], as[j]));
      else
        as[i] = ad(as[i], mu(C[n - j][n - i], as[j]));
    printf("%d ", as[i]);
  }
  return 0;
}
