#include <bits/stdc++.h>
using namespace std;
template <typename T>
void chkmin(T &a, T b) {
  a = min(a, b);
}
template <typename T>
void chkmax(T &a, T b) {
  a = max(a, b);
}
inline int fread(void) {
  int ret = 0, op = 1;
  char ch = getchar();
  for (; !isdigit(ch); ch = getchar())
    if (ch == '-') op = -1;
  for (; isdigit(ch); ch = getchar()) ret = (ret << 1) + (ret << 3) - '0' + ch;
  return ret * op;
}
const int MAXN = 100 + 10;
const int mod = 1e9 + 7;
const int MAXM = +10;
inline int fpow(int base, int top) {
  int ret = 1;
  for (; top; top >>= 1) {
    if (top & 1) ret = 1ll * ret * base % mod;
    base = 1ll * base * base % mod;
  }
  return ret;
}
int n;
int Edge[MAXN][MAXN];
inline void init(void) {
  n = fread();
  int u, v;
  for (int i = 1; i < n; ++i) {
    u = fread(), v = fread();
    Edge[u][v] = Edge[v][u] = 1;
  }
}
int G[MAXN][MAXN];
inline int pls(int x) { return (x >= mod) ? x - mod : x; }
inline int mis(int x) { return (x < 0) ? x + mod : x; }
inline int Det(void) {
  int ret = 1;
  for (int i = 2; i <= n; ++i) {
    int pos = 0;
    for (int j = i; j <= n; ++j)
      if (G[j][i] != 0) {
        pos = j;
        break;
      }
    if (pos != i) swap(G[pos], G[i]), ret = mod - ret;
    for (int j = i + 1; j <= n; ++j) {
      int div = 1ll * G[j][i] * fpow(G[i][i], mod - 2) % mod;
      for (int k = i; k <= n; ++k) {
        G[j][k] = mis(G[j][k] - 1ll * G[i][k] * div % mod);
      }
    }
    ret = 1ll * ret * G[i][i] % mod;
  }
  return ret;
}
int A[MAXN][MAXN], Ans[MAXN];
inline void Gauss(void) {
  for (int i = 1; i <= n; ++i) {
    int pos = 0;
    for (int j = i; j <= n; ++j)
      if (A[j][i] != 0) {
        pos = j;
        break;
      }
    if (pos != i) swap(A[pos], A[i]);
    for (int j = 1; j <= n; ++j) {
      if (j == i) continue;
      int div = 1ll * A[j][i] * fpow(A[i][i], mod - 2) % mod;
      for (int k = i; k <= n + 1; ++k)
        A[j][k] = mis(A[j][k] - 1ll * A[i][k] * div % mod);
    }
  }
  for (int i = 1; i <= n; ++i)
    Ans[i] = 1ll * A[i][n + 1] * fpow(A[i][i], mod - 2) % mod;
}
inline void build(int num) {
  for (int i = 1; i <= n; ++i)
    for (int j = 1; j <= n; ++j) G[i][j] = 0;
  for (int i = 1; i <= n; ++i) {
    for (int j = 1; j < i; ++j) {
      int now = (Edge[i][j]) ? num : 1;
      G[i][i] = pls(G[i][i] + now), G[j][j] = pls(G[j][j] + now);
      G[i][j] = mis(G[i][j] - now), G[j][i] = mis(G[j][i] - now);
    }
  }
}
inline void work(void) {
  for (int num = 1; num <= n; ++num) {
    build(num);
    A[num][n + 1] = Det();
    int tmp = 1;
    for (int i = 1; i <= n; ++i) A[num][i] = tmp, tmp = 1ll * tmp * num % mod;
  }
  Gauss();
  for (int i = 1; i <= n; ++i) printf("%d\n", Ans[i]);
}
int main() {
  init();
  work();
  return 0;
}
