#include <bits/stdc++.h>
template <typename T>
inline void read(T &x) {
  x = 0;
  char c = getchar();
  bool flag = false;
  while (!isdigit(c)) {
    if (c == '-') flag = true;
    c = getchar();
  }
  while (isdigit(c)) x = x * 10 + (c ^ 48), c = getchar();
  if (flag) x = -x;
}
using namespace std;
const int P = 1e9 + 7;
inline long long quickpow(long long x, int k) {
  long long res = 1;
  while (k) {
    if (k & 1) res = res * x % P;
    x = x * x % P;
    k >>= 1;
  }
  return res;
}
inline void ADD(long long &a, long long b) {
  a += b;
  if (a >= P) a -= P;
}
inline void DEL(long long &a, long long b) {
  a -= b;
  if (a < 0) a += P;
}
int n;
bool e[111][111];
long long h[111][111];
inline void addedge(int u, int v, int w) {
  ADD(h[u][u], w);
  ADD(h[v][v], w);
  DEL(h[u][v], w);
  DEL(h[v][u], w);
}
inline long long Gauss(int n) {
  long long res = 1;
  for (int i = 1; i <= n; ++i) {
    int id = -1;
    for (int j = i; j <= n; ++j) {
      if (h[j][i]) {
        id = j;
        break;
      }
    }
    long long inv = quickpow(h[id][i], P - 2);
    res = res * h[id][i] % P;
    for (int j = i; j <= n; ++j) h[id][j] = h[id][j] * inv % P;
    for (int hang = i; hang <= n; ++hang)
      if (hang != id) {
        long long k = h[hang][i];
        for (int j = i; j <= n; ++j) {
          h[hang][j] = ((h[hang][j] - k * h[id][j]) % P + P) % P;
        }
      }
    if (id != i) swap(h[id], h[i]), res = (P - res) % P;
  }
  return res;
}
inline long long work(int v) {
  memset(h, 0, sizeof(h));
  for (int i = 1; i <= n; ++i)
    for (int j = i + 1; j <= n; ++j) addedge(i, j, e[i][j] ? v : 1);
  long long res = Gauss(n - 1);
  return res;
}
namespace Jiazp {
long long h[111][111];
inline void sol() {
  for (int i = 1; i <= n; ++i) {
    int id = -1;
    for (int j = i; j <= n; ++j) {
      if (h[j][i]) {
        id = j;
        break;
      }
    }
    long long inv = quickpow(h[id][i], P - 2);
    for (int j = i; j <= n + 1; ++j) h[id][j] = h[id][j] * inv % P;
    for (int hang = 1; hang <= n; ++hang)
      if (hang != id) {
        long long k = h[hang][i];
        for (int j = i; j <= n + 1; ++j) {
          h[hang][j] = ((h[hang][j] - k * h[id][j]) % P + P) % P;
        }
      }
    if (id != i) swap(h[id], h[i]);
  }
  for (int i = 1; i <= n; ++i) printf("%lld ", (h[i][n + 1] % P + P) % P);
  puts("");
}
}  // namespace Jiazp
int main() {
  read(n);
  for (int i = 1; i < n; ++i) {
    int u, v;
    read(u), read(v);
    e[u][v] = e[v][u] = 1;
  }
  for (int i = 1; i <= n; ++i) {
    Jiazp::h[i][n + 1] = work(i);
    long long tmp = 1;
    for (int j = 1; j <= n; ++j) {
      Jiazp::h[i][j] = tmp;
      tmp = tmp * i % P;
    }
  }
  Jiazp::sol();
  return 0;
}
