#include <bits/stdc++.h>
const int mod = 1000000007;
int n;
int to[222], prev[222], last[111], en;
int f[111][111][111], siz[111];
long long tmp[111][111][111];
int ans[111];
void addedge(int u, int v) {
  to[++en] = v;
  prev[en] = last[u];
  last[u] = en;
}
void dfs(int now, int p) {
  siz[now] = 1;
  f[now][1][1] = 1;
  for (int i = last[now]; i; i = prev[i]) {
    int t = to[i];
    if (t == p) continue;
    dfs(t, now);
    for (int j = 1; j <= siz[now]; ++j) {
      for (int k = 1; k <= siz[t]; ++k) {
        for (int l = 1; l <= siz[now]; ++l) {
          for (int v = 1; v <= siz[t]; ++v) {
            tmp[now][j + k - 1][l + v] += 1ll * f[now][j][l] * f[t][k][v] % mod;
            tmp[now][j + k][l] +=
                1ll * f[now][j][l] * f[t][k][v] % mod * v % mod;
          }
        }
      }
    }
    siz[now] += siz[t];
    for (int j = 1; j <= siz[now]; ++j) {
      for (int k = 1; k <= siz[now]; ++k) {
        f[now][j][k] = tmp[now][j][k] % mod;
        tmp[now][j][k] = 0;
      }
    }
  }
}
int ppow(int a, int b) {
  int tmp = a;
  if (b <= 0) return 1 % mod;
  for (--b; b; b >>= 1) {
    if (b & 1) a = 1ll * a * tmp % mod;
    tmp = 1ll * tmp * tmp % mod;
  }
  return a;
}
int main() {
  scanf("%d", &n);
  for (int i = 1; i < n; ++i) {
    int u, v;
    scanf("%d%d", &u, &v);
    addedge(u, v);
    addedge(v, u);
  }
  dfs(1, 0);
  int lastsum = 0;
  for (int i = 0; i < n - 1; ++i) {
    int sum = 0;
    for (int j = 1; j <= n; ++j) {
      sum += 1ll * j * f[1][n - i][j] % mod;
      sum %= mod;
    }
    sum = 1ll * sum * ppow(n, n - i - 2) % mod;
    ans[i] = sum;
  }
  ans[n - 1] = 1;
  for (int i = n - 2; i >= 0; --i) {
    for (int j = i; j < n - 1; ++j) {
      ans[j] -= ans[j + 1];
      ans[j] = (ans[j] % mod + mod) % mod;
    }
  }
  for (int i = 0; i < n; ++i) {
    printf("%d ", ans[i]);
  }
}
