#include <bits/stdc++.h>
using namespace std;
const int maxn(105);
const int mod(1e9 + 7);
inline void Inc(int &x, int y) { x = x + y >= mod ? x + y - mod : x + y; }
inline void Dec(int &x, int y) { x = x - y < 0 ? x - y + mod : x - y; }
inline int Add(int x, int y) { return x + y >= mod ? x + y - mod : x + y; }
inline int Sub(int x, int y) { return x - y < 0 ? x - y + mod : x - y; }
inline int Pow(long long x, int y) {
  long long ret = 1;
  for (; y; y >>= 1, x = x * x % mod)
    if (y & 1) ret = ret * x % mod;
  return ret;
}
int first[maxn], cnt, f[maxn][2], n, g[maxn], poly[maxn], ans[maxn], tmp[maxn],
    w, inv[maxn];
struct Edge {
  int to, next;
} edge[maxn << 1];
inline void AddEdge(int u, int v) {
  edge[cnt] = (Edge){v, first[u]}, first[u] = cnt++;
  edge[cnt] = (Edge){u, first[v]}, first[v] = cnt++;
}
void Dfs(int u, int ff) {
  int e, v, t0, t1;
  f[u][0] = f[u][1] = 1;
  for (e = first[u]; ~e; e = edge[e].next)
    if ((v = edge[e].to) ^ ff) {
      Dfs(v, u), t0 = f[u][0], t1 = f[u][1];
      f[u][0] = Add((long long)t0 * f[v][1] % mod * w % mod,
                    (long long)t0 * f[v][0] % mod);
      f[u][1] = Add(((long long)t1 * f[v][0] + (long long)t0 * f[v][1]) % mod,
                    (long long)t1 * f[v][1] % mod * w % mod);
    }
}
int main() {
  memset(first, -1, sizeof(first));
  int i, u, v, j;
  scanf("%d", &n);
  for (i = 1; i < n; ++i) scanf("%d%d", &u, &v), AddEdge(u, v);
  for (inv[1] = inv[0] = 1, i = 2; i <= n; ++i)
    inv[i] = (long long)inv[mod % i] * (mod - mod / i) % mod;
  for (poly[0] = j = 1; j <= n; ++j) {
    for (i = n; i; --i)
      poly[i] = Sub(poly[i - 1], (long long)j * poly[i] % mod);
    poly[0] = (long long)poly[0] * (mod - j) % mod;
    if (j == 1)
      g[j] = Pow(n, n - 2) % mod;
    else {
      w = (long long)inv[j - 1] * n % mod, Dfs(1, 0);
      g[j] = (long long)f[1][1] * inv[n] % mod * inv[j - 1] % mod;
      g[j] = (long long)g[j] * Pow(j - 1, n) % mod;
    }
  }
  for (i = 0; i <= n; ++i) tmp[i] = poly[i];
  for (w = 1; w <= n; ++w) {
    for (v = g[w], i = 1; i <= n; ++i)
      if (i ^ w)
        v = (long long)v * (w > i ? inv[w - i] : mod - inv[i - w]) % mod;
    for (i = 0; i <= n; ++i) poly[i] = tmp[i];
    poly[0] = (long long)poly[0] * (mod - inv[w]) % mod;
    for (i = 1; i <= n; ++i)
      Dec(poly[i], poly[i - 1]),
          poly[i] = (long long)poly[i] * (mod - inv[w]) % mod;
    for (i = 0; i <= n; ++i) Inc(ans[i], (long long)v * poly[i] % mod);
  }
  for (i = 0; i < n; ++i) printf("%d ", ans[i]);
  return puts(""), 0;
}
