#include <bits/stdc++.h>
using namespace std;
const int N = 105, M = 1e9 + 7;
int a[N][N], flag[N][N], n, dp[N], ans[N], x, y, Ans[N];
inline int ksm(int x, int y) {
  int ans = 1;
  for (; y; y >>= 1, x = (long long)x * x % M)
    if (y & 1) ans = (long long)ans * x % M;
  return ans;
}
int gauss() {
  int ans = 1;
  for (int i = 1; i < n; i++) {
    int k = i;
    for (int j = i; j < n; j++)
      if (a[j][i]) {
        k = j;
        break;
      }
    if (k != i) {
      swap(a[k], a[i]);
      ans = M - ans;
    }
    for (int j = i + 1; j < n; j++) {
      int temp = M - (long long)ksm(a[i][i], M - 2) * a[j][i] % M;
      for (int k = i; k < n; k++)
        a[j][k] = (a[j][k] + (long long)a[i][k] * temp) % M;
    }
  }
  for (int i = 1; i < n; i++) ans = (long long)ans * a[i][i] % M;
  return ans;
}
int main() {
  scanf("%d", &n);
  for (int i = 1; i < n; i++) {
    scanf("%d%d", &x, &y);
    flag[x][y] = flag[y][x] = 1;
  }
  for (int T = 0; T < n; T++) {
    memset(a, 0, sizeof a);
    for (int i = 1; i <= n; i++)
      for (int j = 1; j <= n; j++)
        if (i != j) {
          if (flag[i][j])
            a[i][j] = M - T, a[i][i] += T;
          else
            a[i][j] = M - 1, a[i][i]++;
        }
    Ans[T] = gauss();
  }
  for (int i = 0; i < n; i++) {
    memset(dp, 0, sizeof dp);
    dp[0] = Ans[i];
    for (int j = 0; j < n; j++)
      if (j != i) dp[0] = (long long)dp[0] * ksm(M + i - j, M - 2) % M;
    for (int j = 0; j < n; j++)
      if (j != i)
        for (int l = j + 1; l >= 0; l--)
          dp[l] = ((long long)dp[l] * (M - j) + (l ? dp[l - 1] : 0)) % M;
    for (int j = 0; j < n; j++) (ans[j] += dp[j]) %= M;
  }
  for (int i = 0; i < n; i++) printf("%d ", ans[i]);
}
