#include <bits/stdc++.h>
using namespace std;
const long long mod = 1000 * 1000 * 1000 + 7;
const int nmax = 105;
vector<int> v[nmax];
long long dp[nmax][nmax][nmax], newdp[nmax][nmax];
long long c[nmax][nmax], coef[nmax];
long long ans[nmax];
int w[nmax];
long long i, j;
int n, a, b;
void prp(long long &a, long long b) { a = (a + b) % mod; }
void dfs(int x) {
  long long k, ind, idx;
  int nod;
  w[x] = 1;
  dp[x][0][1] = 1;
  for (int i = 0; i < v[x].size(); i++)
    if (!w[v[x][i]]) {
      nod = v[x][i];
      dfs(nod);
      for (j = 0; j <= w[x]; j++)
        for (k = 1; k <= w[x]; k++)
          for (ind = 0; ind <= w[nod]; ind++)
            for (idx = 1; idx <= w[nod]; idx++) {
              prp(newdp[j + ind + 1][k],
                  1LL * dp[x][j][k] * ((dp[nod][ind][idx] * idx) % mod));
              prp(newdp[j + ind][k + idx],
                  1LL * dp[x][j][k] * dp[nod][ind][idx]);
            }
      w[x] += w[nod];
      for (j = 0; j <= w[x]; j++)
        for (k = 1; k <= w[x]; k++) {
          dp[x][j][k] = newdp[j][k];
          newdp[j][k] = 0;
        }
    }
}
void chef() {
  for (i = 0; i <= n; i++) {
    c[i][0] = 1;
    for (j = 1; j <= i; j++) c[i][j] = (c[i - 1][j - 1] + c[i - 1][j]) % mod;
  }
  long long N = n;
  coef[0] = 1;
  for (i = 1; i <= n; i++) coef[i] = (1LL * coef[i - 1] * N) % mod;
}
long long cc(int x) {
  x--;
  if (x < 0) return 1;
  return coef[x];
}
int main() {
  cin >> n;
  for (i = 1; i <= n - 1; i++) {
    cin >> a >> b;
    v[a].push_back(b);
    v[b].push_back(a);
  }
  chef();
  dfs(1);
  for (i = 0; i < n; i++)
    for (j = 1; j <= n; j++) prp(ans[i], ((dp[1][i][j] * (j)) % mod) * cc(i));
  reverse(ans, ans + n);
  ans[n - 1] = 1;
  for (i = n - 1; i >= 0; i--)
    for (j = i + 1; j < n; j++)
      ans[i] = (1LL * ans[i] - (1LL * ans[j] * c[j][i]) % mod + mod) % mod;
  for (i = 0; i < n; i++) cout << ans[i] << ' ';
  return 0;
}
