#include <bits/stdc++.h>
using namespace std;
const int MAXN = 128, MOD = 1e9 + 7;
inline long long fpow(long long a, long long x) {
  long long ans = 1;
  for (a %= MOD; x; x >>= 1, a = a * a % MOD)
    if (x & 1) ans = ans * a % MOD;
  return ans;
}
inline long long inv(long long a) { return fpow(a, MOD - 2); }
struct Matrix {
  long long Num[MAXN][MAXN];
  inline long long Gauss(long long N, long long M) {
    long long lst = 0;
    for (int i = 1; i <= N; i++) {
      int pos = lst + 1;
      while (pos <= N && Num[pos][i] == 0) ++pos;
      if (pos > N) continue;
      ++lst;
      if (pos != lst) swap(Num[pos], Num[lst]);
      for (int j = i, x = inv(Num[lst][i]); j <= M; j++)
        Num[lst][j] = Num[lst][j] * x % MOD;
      for (int k = 1; k <= N; k++)
        if (k != lst && Num[k][i])
          for (int j = M; j >= i; j--)
            Num[k][j] =
                (Num[k][j] - (long long)Num[lst][j] * Num[k][i] % MOD + MOD) %
                MOD;
    }
    for (int i = lst + 1; i <= N; i++)
      for (int j = N + 1; j <= M; j++)
        if (Num[i][j]) return -1;
    return N - lst;
  }
  inline long long det(long long N) {
    long long res = 1;
    for (int i = 1; i <= N; i++) {
      int pos = i;
      while (pos <= N && Num[pos][i] == 0) ++pos;
      if (pos > N) return 0;
      if (pos != i) swap(Num[pos], Num[i]), res = -res;
      res = res * Num[i][i] % MOD;
      for (int j = i, x = inv(Num[i][i]); j <= N; j++)
        Num[i][j] = Num[i][j] * x % MOD;
      for (int k = i + 1; k <= N; k++)
        if (Num[k][i])
          for (int j = N; j >= i; j--)
            Num[k][j] =
                (Num[k][j] - (long long)Num[i][j] * Num[k][i] % MOD + MOD) %
                MOD;
    }
    for (int i = 1; i <= N; i++) res = res * Num[i][i] % MOD;
    return (res % MOD + MOD) % MOD;
  }
} M, C;
int N;
vector<pair<long long, long long> > edg;
inline void calc(int num) {
  for (int i = 1; i <= N; i++)
    for (int j = 1; j <= N; j++) M.Num[i][j] = 1;
  for (auto e : edg) M.Num[e.first][e.second] = M.Num[e.second][e.first] = num;
  for (int i = 1; i <= N; i++) {
    long long& num = M.Num[i][i];
    num = 0;
    for (int j = 1; j <= N; j++)
      if (i != j) num += M.Num[i][j], M.Num[i][j] = -M.Num[i][j];
  }
  C.Num[num][1] = 1;
  for (int j = 2; j <= N; j++)
    C.Num[num][j] = (long long)C.Num[num][j - 1] * num % MOD;
  C.Num[num][N + 1] = M.det(N - 1);
}
int main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  cin >> N;
  for (int i = 1, u, v; i < N; i++)
    cin >> u >> v, edg.push_back(pair<long long, long long>(u, v));
  for (int i = 1; i <= N; i++) calc(i);
  C.Gauss(N, N + 1);
  for (int i = 1; i <= N; i++) cout << C.Num[i][N + 1] << " ";
  cout.flush();
  return 0;
}
