#include <bits/stdc++.h>
using namespace std;
const int maxn = 200000 + 10, maxlen = maxn * 4, mo = 924844033, GG = 5;
int size[maxn], h[maxn], go[maxn * 2], nxt[maxn * 2];
int w[maxlen], a[maxlen], b[maxlen], tt[maxlen], c[maxlen], rev[maxlen],
    fac[maxn], inv[maxn];
int i, j, k, l, t, n, m, tot, len, ans, ni;
double ce;
void add(int x, int y) {
  go[++tot] = y;
  nxt[tot] = h[x];
  h[x] = tot;
}
int qsm(int x, int y) {
  if (!y) return 1;
  int t = qsm(x, y / 2);
  t = (long long)t * t % mo;
  if (y % 2) t = (long long)t * x % mo;
  return t;
}
void dfs(int x, int y) {
  a[n]++;
  int t = h[x];
  size[x] = 1;
  while (t) {
    if (go[t] != y) {
      dfs(go[t], x);
      a[size[go[t]]]--;
      size[x] += size[go[t]];
    }
    t = nxt[t];
  }
  a[n - size[x]]--;
}
void prepare() {
  w[0] = 1;
  w[1] = qsm(GG, (mo - 1) / len);
  for (int i = 2; i <= len; i++) w[i] = (long long)w[i - 1] * w[1] % mo;
  for (int i = 0; i < len; i++) {
    int p = 0;
    for (int j = 0, tp = i; j < ce; j++, tp /= 2) p = (p << 1) + (tp % 2);
    rev[i] = p;
  }
  ni = qsm(len, mo - 2);
}
void DFT(int *a, int sig) {
  for (int i = 0; i < len; i++) tt[rev[i]] = a[i];
  for (int m = 2; m <= len; m *= 2) {
    int half = m / 2, bei = len / m;
    for (int i = 0; i < half; i++) {
      int wi = sig > 0 ? w[i * bei] : w[len - i * bei];
      for (int j = i; j < len; j += m) {
        int u = tt[j], v = (long long)tt[j + half] * wi % mo;
        tt[j] = (u + v) % mo;
        tt[j + half] = (u - v) % mo;
      }
    }
  }
  if (sig == -1)
    for (int i = 0; i < len; i++) tt[i] = (long long)tt[i] * ni % mo;
  for (int i = 0; i < len; i++) a[i] = tt[i];
}
void NTT() {
  DFT(a, 1);
  DFT(b, 1);
  for (int i = 0; i < len; i++) a[i] = (long long)a[i] * b[i] % mo;
  DFT(a, -1);
  for (int i = 0; i < len; i++) c[i] = a[i];
}
int main() {
  scanf("%d", &n);
  for (int i = 1; i < n; i++) {
    scanf("%d%d", &j, &k);
    add(j, k);
    add(k, j);
  }
  dfs(1, 0);
  fac[0] = 1;
  for (int i = 1; i <= n; i++) fac[i] = (long long)fac[i - 1] * i % mo;
  inv[n] = qsm(fac[n], mo - 2);
  for (int i = n - 1; i >= 0; i--)
    inv[i] = (long long)inv[i + 1] * (i + 1) % mo;
  for (int i = 0; i <= n; i++) a[i] = (long long)a[i] * fac[i] % mo;
  for (int i = 0; i <= n; i++) b[i] = inv[i];
  reverse(b, b + n + 1);
  len = 1;
  while (len <= 2 * n) len *= 2;
  ce = log(len) / log(2);
  prepare();
  NTT();
  for (int i = 1; i <= n; i++) {
    ans = (long long)inv[i] * c[n + i] % mo;
    (ans += mo) %= mo;
    printf("%d\n", ans);
  }
  return 0;
}
