#include <bits/stdc++.h>
using namespace std;
long long jc[550000], ny[550000];
struct node {
  long long y, nex;
} a[2 * 210000];
struct NTT {
  long long a[550000], b[550000], c[550000], bitrev[550000], m, g[550000],
      ng[550000];
  long long qmod(long long a, long long b) {
    long long t = 1;
    while (b) {
      if (b % 2) t = 1ll * t * a % 924844033;
      b /= 2;
      a = 1ll * a * a % 924844033;
    }
    return t;
  }
  void ntt_pre(long long n) {
    long long len = 0;
    while ((1 << len) < n) len++;
    len--;
    for (long long i = 0; i < n; i++) {
      long long k = 0;
      for (long long j = 0; j <= len; j++)
        if (i & (1 << j)) k |= 1 << (len - j);
      bitrev[i] = k;
    }
  }
  void ntt(long long *x, long long n, long long o) {
    for (long long i = 0; i < n; i++)
      if (i > bitrev[i]) swap(x[i], x[bitrev[i]]);
    for (long long s = 2; s <= n; s *= 2) {
      if (o == 1 && g[s] == 0) g[s] = qmod(5, (924844033 - 1) / s);
      if (o == -1 && ng[s] == 0)
        ng[s] = qmod(5, 924844033 - 1 - (924844033 - 1) / s);
      long long wn;
      if (o == 1)
        wn = g[s];
      else
        wn = ng[s];
      for (long long i = 0; i < n; i += s) {
        long long w = 1;
        for (long long j = 0; j < s / 2; j++) {
          long long t1 = x[i + j], t2 = 1ll * w * x[i + j + s / 2] % 924844033;
          x[i + j] = (t1 + t2) % 924844033;
          x[i + j + s / 2] = (t1 - t2) % 924844033;
          w = 1ll * w * wn % 924844033;
        }
      }
    }
  }
  void work() {
    m *= 2;
    long long n = 1;
    while (n - 1 < m) n *= 2;
    ntt_pre(n);
    ntt(a, n, 1);
    ntt(b, n, 1);
    for (long long i = 0; i < n; i++) c[i] = 1ll * a[i] * b[i] % 924844033;
    ntt(c, n, -1);
    long long ny = qmod(n, 924844033 - 2);
    for (long long i = 0; i < n; i++) c[i] = 1ll * c[i] * ny % 924844033;
    long long oo = 1;
  }
} g;
long long fir[210000], len, n, siz[210000], cnt[210000], ans[210000];
void ins(long long x, long long y) {
  a[++len].y = y;
  a[len].nex = fir[x];
  fir[x] = len;
}
void dfs(long long x, long long fa) {
  siz[x] = 1;
  for (long long k = fir[x]; k; k = a[k].nex) {
    long long y = a[k].y;
    if (y == fa) continue;
    dfs(y, x);
    siz[x] += siz[y];
    cnt[siz[y]]++;
  }
  cnt[n - siz[x]]++;
}
long long C(long long n, long long m) {
  return 1ll * jc[n] * ny[m] % 924844033 * ny[n - m] % 924844033;
}
int main() {
  jc[0] = jc[1] = ny[0] = ny[1] = 1;
  for (long long i = 2; i < 550000; i++)
    jc[i] = 1ll * jc[i - 1] * i % 924844033,
    ny[i] = 1ll * (-924844033 / i) * ny[924844033 % i] % 924844033;
  for (long long i = 2; i < 550000; i++)
    ny[i] = 1ll * ny[i - 1] * ny[i] % 924844033;
  scanf("%lld", &n);
  for (long long i = 1; i < n; i++) {
    long long x, y;
    scanf("%lld%lld", &x, &y);
    ins(x, y);
    ins(y, x);
  }
  dfs(1, 0);
  for (long long i = 1; i <= n; i++)
    g.a[i] = cnt[i] * jc[i] % 924844033, g.b[i] = ny[n - i];
  g.m = n;
  g.work();
  for (long long i = 1; i <= n; i++) ans[i] = 1ll * n * C(n, i) % 924844033;
  for (long long i = 1; i <= n; i++)
    ans[i] = (ans[i] - (1ll * ny[i] * g.c[n + i] % 924844033)) % 924844033;
  for (long long i = 1; i <= n; i++)
    printf("%lld\n", (ans[i] + 924844033) % 924844033);
  return 0;
}
