#include <bits/stdc++.h>
using namespace std;
inline int read() {
  int f = 1, x = 0;
  char ch;
  do {
    ch = getchar();
    if (ch == '-') f = -1LL;
  } while (ch < '0' || ch > '9');
  do {
    x = x * 10 + ch - '0';
    ch = getchar();
  } while (ch >= '0' && ch <= '9');
  return f * x;
}
template <class T>
inline void chmax(T &a, T b) {
  if (a < b) a = b;
}
template <class T>
inline void chmin(T &a, T b) {
  if (a > b) a = b;
}
inline void swap(int &a, int &b) {
  int c = a;
  a = b;
  b = c;
}
using namespace std;
const int N = 233;
const int P = 1e9 + 7;
const int mod = 1e9 + 7;
inline long long qpow(long long a, long long b) {
  long long q = 1;
  while (b) {
    if (b & 1) q = q * a % P;
    a = a * a % P;
    b >>= 1;
  }
  return q;
}
inline long long gtinv(long long x) { return qpow(x, P - 2); }
long long a[N][N];
int e[N][N];
inline long long sub(long long a, long long b) {
  if (a < b) return a - b + P;
  return a - b;
}
long long det(int n) {
  long long ans = 1;
  for (int i = (1); i <= (n); ++i) {
    bool fg = 0;
    for (int j = (i); j <= (n); ++j)
      if (a[j][i] != 0) {
        for (int k = (i); k <= (n); ++k) swap(a[i][k], a[j][k]);
        if (j != i) ans = -ans;
        fg = 1;
        break;
      }
    if (!fg) return 0;
    for (int j = (i + 1); j <= (n); ++j) {
      long long tmp = -a[j][i] * qpow(a[i][i], P - 2) % P;
      for (int k = (i); k <= (n); ++k) a[j][k] = (a[j][k] + tmp * a[i][k]) % P;
    }
  }
  for (int i = (1); i <= (n); ++i) ans = ans * a[i][i] % P;
  if (ans < 0) ans += P;
  return ans;
}
int n;
long long ans[N], inv[N], g[N], w[N];
long long c[N];
int main() {
  n = read();
  for (int i = (1); i <= (n - 1); ++i) {
    int u = read(), v = read();
    e[u][v] = e[v][u] = 1;
  }
  for (int x = (0); x <= (n); ++x) {
    for (int i = (0); i <= (n); ++i) a[i][i] = 0;
    for (int i = (1); i <= (n); ++i) {
      for (int j = (1); j <= (n); ++j) {
        if (i == j) continue;
        a[i][j] = e[i][j] ? -x : -1;
        a[i][i] -= a[i][j];
      }
    }
    ans[x] = det(n - 1);
  }
  inv[0] = inv[1] = 1;
  for (int i = 2; i <= n; i++) inv[i] = mod - (inv[mod % i] * (mod / i)) % mod;
  g[0] = g[1] = 1;
  for (int i = 2; i <= n; i++) g[i] = g[i - 1] * inv[i] % mod;
  for (int i = 0; i <= n; i++) w[i] = qpow(i, n);
  for (int i = n; i >= 0; i--) {
    for (int j = 0; j <= i; j++) {
      if (j & 1) {
        c[i] -= g[j] * g[i - j] % mod * ans[i - j] % mod;
        if (c[i] < 0) c[i] += mod;
      } else {
        c[i] += g[j] * g[i - j] % mod * ans[i - j] % mod;
        if (c[i] >= mod) c[i] -= mod;
      }
    }
    for (int j = 1; j <= n; j++) {
      ans[j] -= c[i] * w[j] % mod;
      if (ans[j] < 0) ans[j] += mod;
      w[j] = w[j] * inv[j] % mod;
    }
  }
  for (int i = (0); i <= (n - 1); ++i) printf("%lld ", c[i]);
  puts("");
  return 0;
}
