#include <bits/stdc++.h>
using namespace std;
const int mod = 1e9 + 7;
const int maxn = 1e5 + 5;
int add(int x, int y) {
  x += y;
  if (x >= mod) x -= mod;
  return x;
}
int mul(int x, int y) {
  long long z = 1LL * x * y;
  return z - z / mod * mod;
}
int powt(int a, int b) {
  int r = 1;
  while (b) {
    if (b & 1) r = mul(r, a);
    a = mul(a, a);
    b >>= 1;
  }
  return r;
}
int a[105][105], b[105][105], c[105][105];
int guass(int f[][105], int n) {
  int i, j, k, inv, res = 1;
  bool sign = 0;
  for (i = 0; i < n; i++) {
    for (j = i; j < n; j++) {
      if (f[j][i]) break;
    }
    if (j == n) return 0;
    for (k = i; k <= n; k++) swap(f[i][k], f[j][k]);
    if (i != j) sign ^= 1;
    inv = powt(f[i][i], mod - 2);
    res = mul(res, f[i][i]);
    for (k = i; k <= n; k++) f[i][k] = mul(f[i][k], inv);
    for (j = 0; j < n; j++) {
      if (j != i && f[j][i]) {
        inv = mod - f[j][i];
        for (k = i; k <= n; k++) f[j][k] = add(f[j][k], mul(f[i][k], inv));
      }
    }
  }
  if (sign) res = mod - res;
  return res;
}
int main() {
  int n, i, j, k, u, v;
  scanf("%d", &n);
  for (i = 1; i < n; i++) {
    scanf("%d%d", &u, &v);
    a[--u][--v] = 1;
    a[v][u] = 1;
  }
  for (k = 0; k < n; k++) {
    memset(b, 0, sizeof(b));
    for (i = 0; i < n; i++) {
      for (j = 0; j < i; j++) {
        if (a[i][j])
          u = a[i][j] * k;
        else
          u = 1;
        b[i][j] = b[j][i] = mod - u;
        b[i][i] += u;
        b[j][j] += u;
      }
    }
    for (i = 0, j = 1; i < n; i++, j = mul(j, k)) c[k][i] = j;
    c[k][n] = guass(b, n - 1);
  }
  guass(c, n);
  for (i = 0; i < n; i++) printf("%d ", c[i][n]);
  return 0;
}
