#include <bits/stdc++.h>
using namespace std;
double eps = 1e-8;
const long double PI = acos((long double)-1);
const long long int INF = 0x3f3f3f3fll;
const int maxn = 100 + 5;
const int mod = 1e9 + 7;
long long int mat[maxn][maxn];
int G[maxn][maxn], dp[maxn];
int so[maxn], ans[maxn];
int n;
long long int mu(long long int a, long long int b) {
  long long int ans = 1;
  while (b) {
    if ((b & 1) && (ans *= a) >= mod) ans %= mod;
    b >>= 1;
    if ((a *= a) >= mod) a %= mod;
  }
  return ans;
}
int Det(int N) {
  N--;
  int cur = 0, sgn = 1;
  for (int i = 0; i < N; ++i) {
    int nxt = -1;
    for (int j = cur; j < N; ++j)
      if (mat[j][i]) {
        nxt = j;
        break;
      }
    if (nxt == -1) return 0;
    if (nxt != cur) sgn = -sgn;
    for (int j = 0; j < N; ++j) swap(mat[cur][j], mat[nxt][j]);
    for (int j = cur + 1; j < N; ++j) {
      while (mat[j][i]) {
        int x = mat[j][i] / mat[cur][i];
        if (x) {
          for (int k = i; k < N; ++k) {
            mat[j][k] -= 1ll * mat[cur][k] * x % mod;
            mat[j][k] %= mod;
            if (mat[j][k] < 0) mat[j][k] += mod;
          }
        } else {
          for (int k = i; k < N; ++k) swap(mat[j][k], mat[cur][k]);
          sgn = -sgn;
        }
      }
    }
    ++cur;
  }
  int ans = 1;
  for (int i = 0; i < N; ++i) ans = 1ll * ans * mat[i][i] % mod;
  if (sgn == -1) ans = mod - ans;
  return ans;
}
int cal(int x) {
  memset(mat, 0, sizeof(mat));
  for (int i = 0; i < n; ++i) {
    int sum = 0;
    for (int j = 0; j < n; ++j)
      if (i != j) {
        if (G[i][j] == 1)
          mat[i][j] = x;
        else
          mat[i][j] = 1;
        sum += mat[i][j];
        mat[i][j] = mod - mat[i][j];
      }
    mat[i][i] = sum;
  }
  return Det(n);
}
int main() {
  scanf("%d", &n);
  for (int x = 0; x < n; x++) {
    for (int y = x + 1; y < n; y++) G[x][y] = G[y][x] = 1;
  }
  for (int x = 1; x < n; x++) {
    int u, v;
    scanf("%d%d", &u, &v);
    G[u - 1][v - 1] = G[v - 1][u - 1] = 0;
  }
  for (int i = 0; i < n; ++i) {
    so[i] = cal(i);
    int y = so[i];
    memset(dp, 0, sizeof(dp));
    dp[0] = 1;
    for (int j = 0; j < n; ++j)
      if (i != j) {
        y = 1ll * y * mu(i - j + mod, mod - 2) % mod;
        for (int k = n - 1; k >= 0; --k) {
          dp[k + 1] += dp[k];
          if (dp[k + 1] > mod) dp[k + 1] -= mod;
          dp[k] = 1ll * dp[k] * (mod - j) % mod;
        }
      }
    for (int x = 0; x < n; ++x)
      for (int j = 0; j <= x; ++j) {
        ans[x] += 1ll * dp[j] * y % mod;
        if (ans[x] > mod) ans[x] -= mod;
      }
  }
  for (int x = n - 1; x >= 0; x--) {
    if (x == 0)
      printf("%d ", ans[x]);
    else
      printf("%d ", (ans[x] - ans[x - 1] + mod) % mod);
  }
  return 0;
}
