#include <bits/stdc++.h>
using namespace std;
const int N = 113;
int add(int x, int y) {
  x += y;
  if (x >= 1000000007) x -= 1000000007;
  return x;
}
int sub(int x, int y) {
  if (x < y) x += 1000000007;
  x -= y;
  return x;
}
int mul(int x, int y) { return (long long)x * y % 1000000007; }
int qpow(int x, int y, int p = 1000000007) {
  int res = 1;
  while (y) {
    if (y & 1) res = mul(res, x);
    x = mul(x, x);
    y >>= 1;
  }
  return res;
}
vector<int> G[N];
int f[N][N][N], g[N], h[N], d[N][N], sz[N];
void dfs(int x, int fa) {
  f[x][1][0] = 1;
  sz[x] = 1;
  for (int j = 0; j < G[x].size(); j++)
    if (G[x][j] != fa) {
      int v = G[x][j];
      dfs(v, x);
      memset(d, 0, sizeof d);
      for (int xsz = sz[x]; xsz >= 1; xsz--) {
        for (int xedges = sz[x]; xedges >= 0; xedges--) {
          if (f[x][xsz][xedges]) {
            for (int sonedges = sz[v]; sonedges >= 0; sonedges--) {
              for (int sonsz = sz[v]; sonsz >= 1; sonsz--)
                if (f[v][sonsz][sonedges]) {
                  d[xsz][xedges + sonedges] =
                      add(d[xsz][xedges + sonedges],
                          mul(f[x][xsz][xedges], f[v][sonsz][sonedges]));
                  d[xsz + sonsz][xedges + sonedges + 1] =
                      add(d[xsz + sonsz][xedges + sonedges + 1],
                          mul(mul(f[x][xsz][xedges], f[v][sonsz][sonedges]),
                              mul(qpow(mul(xsz, sonsz), 1000000007 - 2),
                                  xsz + sonsz)));
                }
            }
          }
        }
      }
      memcpy(f[x], d, sizeof f[x]);
      sz[x] += sz[v];
    }
}
int n;
int binom[N][N];
int main() {
  binom[0][0] = 1;
  for (int i = 1; i < N; i++) {
    binom[i][0] = 1;
    for (int j = 1; j <= i; j++) {
      binom[i][j] = add(binom[i - 1][j], binom[i - 1][j - 1]);
    }
  }
  scanf("%d", &n);
  for (int i = 1; i < n; i++) {
    int u, v;
    scanf("%d%d", &u, &v);
    G[u].push_back(v);
    G[v].push_back(u);
  }
  dfs(1, 0);
  for (int num = 0; num < n; num++) {
    for (int sz = 1; sz <= n; sz++) {
      g[num] = add(g[num], f[1][sz][num]);
    }
    g[num] = mul(g[num], qpow(n, 1000000007 - 1 + n - num - 2));
  }
  for (int num = n - 1; num >= 0; num--) {
    for (int _num = num; _num < n; _num++) {
      h[num] = add(h[num], (_num - num) & 1
                               ? 1000000007 - mul(binom[_num][num], g[_num])
                               : mul(binom[_num][num], g[_num]));
    }
  }
  for (int i = 0; i < n; i++) printf("%d ", h[i]);
  return 0;
}
