#include <bits/stdc++.h>
using namespace std;
const long long Mod = 924844033;
const long long N = 800010;
struct node {
  long long x, y, next;
} edge[N];
long long len, first[N];
void ins(long long x, long long y) {
  len++;
  edge[len].x = x;
  edge[len].y = y;
  edge[len].next = first[x];
  first[x] = len;
}
long long qpow(long long x, long long k, long long mo) {
  long long s = 1;
  while (k) {
    if (k & 1) s = (s * x) % mo;
    x = (x * x) % mo;
    k >>= 1;
  }
  return s;
}
inline long long read() {
  char ch = getchar();
  long long p = 0;
  long long f = 1;
  while (ch < '0' || ch > '9') {
    if (ch == '-') f = -1;
    ch = getchar();
  }
  while (ch >= '0' && ch <= '9') {
    p = p * 10 + (ch - '0');
    ch = getchar();
  }
  return p * f;
}
long long siz[N];
void dfs(long long x, long long f) {
  siz[x] = 1;
  for (long long k = first[x]; k != -1; k = edge[k].next) {
    long long y = edge[k].y;
    if (y == f) continue;
    dfs(y, x);
    siz[x] += siz[y];
  }
}
long long jc[N];
long long R[N];
void NFT(long long *a, long long n, long long fh) {
  for (long long i = 1; i < n; i++)
    if (R[i] > i) swap(a[R[i]], a[i]);
  for (long long i = 1; i < n; i <<= 1) {
    long long gn = qpow(5LL, (Mod - 1) / (i << 1), Mod);
    for (long long j = 0; j < n; j += (i << 1)) {
      long long g = 1;
      for (long long k = 0; k < i; k++, g = (g * gn) % Mod) {
        long long x = a[j + k];
        long long y = a[j + k + i] * g % Mod;
        a[j + k] = (x + y) % Mod;
        a[j + k + i] = (x - y + Mod) % Mod;
      }
    }
  }
  if (fh == -1) reverse(a + 1, a + n);
}
void NTT(long long *a, long long *b, long long n, long long m) {
  m += n;
  long long l = 0;
  for (n = 1; n <= m; n <<= 1) l++;
  for (long long i = 1; i < n; i++)
    R[i] = (R[i >> 1] >> 1) | ((i & 1) << (l - 1));
  NFT(a, n, 1);
  NFT(b, n, 1);
  for (long long i = 0; i < n; i++) a[i] = (a[i] * b[i]) % Mod;
  NFT(a, n, -1);
  long long ny = qpow(n, Mod - 2, Mod);
  for (long long i = 0; i < n; i++) a[i] = (a[i] * ny) % Mod;
}
long long a[N], b[N], c[N], n;
int main() {
  n = read();
  len = 0;
  memset(first, -1, sizeof(first));
  for (long long i = 1; i < n; i++) {
    long long x = read(), y = read();
    ins(x, y);
    ins(y, x);
  }
  memset(siz, 0, sizeof(siz));
  dfs(1, 0);
  jc[0] = 1;
  for (long long i = 1; i <= n; i++) jc[i] = (jc[i - 1] * i) % Mod;
  for (long long i = 0; i <= n; i++) a[i] = jc[i];
  for (long long i = 2; i <= n; i++) c[n]++, c[siz[i]]--, c[n - siz[i]]--;
  c[n]++;
  for (long long i = 0; i <= n; i++)
    a[i] = (a[i] * c[i] % Mod + Mod) % Mod,
    b[i] = qpow(jc[n - i], Mod - 2, Mod);
  NTT(a, b, n, n);
  for (long long i = 1; i <= n; i++)
    printf("%lld\n", a[n + i] * qpow(jc[i], Mod - 2, Mod) % Mod);
  return 0;
}
