#include <bits/stdc++.h>
using namespace std;
const int N = 110;
const int MOD = 1e9 + 7;
int n;
int C[N][N];
int f[N][N][N], g[N][N], h[N], siz[N];
vector<int> bi[N];
void ADD(int &t, int d) {
  t += d;
  if (t >= MOD) t -= MOD;
}
void dfs(int t, int p) {
  siz[t] = 1;
  f[t][0][1] = 1;
  for (int i = 0; i < bi[t].size(); ++i)
    if (bi[t][i] != p) {
      dfs(bi[t][i], t);
      for (int p1 = 0; p1 <= siz[t] + siz[bi[t][i]]; ++p1)
        for (int q1 = 1; p1 + q1 <= siz[t] + siz[bi[t][i]]; ++q1) g[p1][q1] = 0;
      for (int p1 = 0; p1 <= siz[t]; ++p1)
        for (int q1 = 1; p1 + q1 <= siz[t]; ++q1)
          for (int p2 = 0; p2 <= siz[bi[t][i]]; ++p2)
            for (int q2 = 0; p2 + q2 <= siz[bi[t][i]]; ++q2)
              ADD(g[p1 + p2][q1 + q2],
                  1ll * f[t][p1][q1] * f[bi[t][i]][p2][q2] % MOD);
      for (int p1 = 0; p1 <= siz[t] + siz[bi[t][i]]; ++p1)
        for (int q1 = 1; p1 + q1 <= siz[t] + siz[bi[t][i]]; ++q1)
          f[t][p1][q1] = g[p1][q1];
      siz[t] += siz[bi[t][i]];
    }
  for (int p = 0; p <= siz[t]; ++p)
    for (int q = 1; q <= siz[t]; ++q)
      ADD(f[t][p + 1][0], 1ll * f[t][p][q] * q % MOD);
}
int powi(int a, int b) {
  if (b < 0) b += MOD - 1;
  int c = 1;
  for (; b; b >>= 1, a = 1ll * a * a % MOD)
    if (b & 1) c = 1ll * c * a % MOD;
  return c;
}
int main() {
  cin >> n;
  for (int i = 0; i <= n; ++i) {
    C[i][0] = C[i][i] = 1;
    for (int j = 1; j < i; ++j) C[i][j] = (C[i - 1][j - 1] + C[i - 1][j]) % MOD;
  }
  for (int i = 1; i < n; ++i) {
    int a, b;
    cin >> a >> b;
    bi[a].push_back(b);
    bi[b].push_back(a);
  }
  dfs(1, 0);
  for (int i = 1; i <= n; ++i) h[i] = 1ll * f[1][i][0] * powi(n, i - 2) % MOD;
  for (int i = 1; i <= n; ++i)
    for (int j = 1; j < i; ++j)
      h[i] = (h[i] - 1ll * C[n - j][n - i] * h[j] % MOD + MOD) % MOD;
  for (int i = n; i >= 1; --i) cout << h[i] << " ";
  cout << endl;
}
