#include <bits/stdc++.h>
using namespace std;
const int INF = 0x3fffffff;
const int SINF = 0x7fffffff;
const long long LINF = 0x3fffffffffffffff;
const long long SLINF = 0x7fffffffffffffff;
const int MAXN = 107;
const int MOD = static_cast<int>(1e9 + 7);
int n;
int g[MAXN][MAXN];
int a[MAXN][MAXN];
int v[MAXN];
int ans[MAXN], cur[2][MAXN];
void init();
void input();
void work();
int getval(int cx);
int det();
int add(int x, int y) {
  x += y;
  if (x >= MOD) x -= MOD;
  return x;
}
void addv(int &x, int y) {
  x += y;
  if (x >= MOD) x -= MOD;
}
int dec(int x, int y) {
  x -= y;
  if (x < 0) x += MOD;
  return x;
}
void decv(int &x, int y) {
  x -= y;
  if (x < 0) x += MOD;
}
int qpow(int a, int b) {
  long long base = a, ans = 1;
  while (b) {
    if (b & 1) (ans *= base) %= MOD;
    (base *= base) %= MOD;
    b >>= 1;
  }
  return ans;
}
int main() {
  init();
  input();
  work();
}
void init() { ios::sync_with_stdio(false); }
void input() {
  scanf("%d", &n);
  int u, v;
  for (int i = 1; i < n; ++i) {
    scanf("%d%d", &u, &v);
    g[u][v] = g[v][u] = 1;
  }
}
void work() {
  for (int i = 0; i < n; ++i) v[i] = getval(i);
  long long cv;
  int t;
  for (int i = 0; i < n; ++i) {
    cv = v[i];
    memset(cur[0], 0, sizeof(cur[0]));
    cur[0][0] = 1;
    t = 0;
    for (int j = 0; j < n; ++j) {
      if (i ^ j) {
        t ^= 1;
        memset(cur[t], 0, sizeof(cur[t]));
        (cv *= qpow(dec(i, j), MOD - 2)) %= MOD;
        for (int k = 0; k < n; ++k) {
          addv(cur[t][k + 1], cur[t ^ 1][k]);
          decv(cur[t][k], cur[t ^ 1][k] * static_cast<long long>(j) % MOD);
        }
      }
    }
    for (int j = 0; j < n; ++j) addv(ans[j], cur[t][j] * cv % MOD);
  }
  for (int i = 0; i < n; ++i) printf("%d ", ans[i]);
  putchar('\n');
}
int getval(int cx) {
  memset(a, 0, sizeof(a));
  for (int i = 1; i <= n; ++i) {
    for (int j = 1; j <= n; ++j) {
      if (i ^ j) {
        if (!g[i][j]) {
          a[i][j] = -1;
          ++a[i][i];
        } else {
          a[i][j] = -cx;
          a[i][i] += cx;
        }
      }
    }
  }
  return det();
}
int det() {
  int t = 1, mul, tv;
  for (int i = 1; i < n; ++i) {
    if (!a[i][i]) {
      for (int j = i + 1; j < n; ++j) {
        if (a[i][j]) {
          t *= -1;
          for (int k = i; k < n; ++k) swap(a[i][k], a[j][k]);
        }
      }
    }
    mul = qpow(a[i][i], MOD - 2);
    for (int j = i + 1; j < n; ++j) {
      tv = a[j][i];
      for (int k = i; k < n; ++k) {
        decv(a[j][k], static_cast<long long>(a[i][k]) * tv % MOD * mul % MOD);
      }
    }
  }
  long long ans = 1;
  for (int i = 1; i < n; ++i) (ans *= a[i][i]) %= MOD;
  return static_cast<int>(ans);
}
