#include <bits/stdc++.h>
using namespace std;
const int N = 5e5 + 5, M = 5e7 + 5, INF = 1e9, mod = 924844033;
const long long linf = 1e18;
const double eps = 1e-8, pi = acos(-1);
inline int gmin(int &a, int b) {
  if (a > b) a = b;
}
inline long long gmin(long long &a, long long b) {
  if (a > b) a = b;
}
inline int gmax(int &a, int b) {
  if (a < b) a = b;
}
inline long long gmax(long long &a, long long b) {
  if (a < b) a = b;
}
inline void read(long long &x) {
  long long f = 1, t = 0;
  char ch = getchar();
  while (ch < '0' || ch > '9') {
    if (ch == '-') f = -1;
    ch = getchar();
  }
  while (ch >= '0' && ch <= '9') {
    t = t * 10 + ch - '0';
    ch = getchar();
  }
  x = t * f;
}
inline long long read(long long &x, long long &y) {
  read(x);
  read(y);
}
inline void read(int &x) {
  int f = 1, t = 0;
  char ch = getchar();
  while (ch < '0' || ch > '9') {
    if (ch == '-') f = -1;
    ch = getchar();
  }
  while (ch >= '0' && ch <= '9') {
    t = t * 10 + ch - '0';
    ch = getchar();
  }
  x = t * f;
}
inline int read(int &x, int &y) {
  read(x);
  read(y);
}
inline void read(int &a, int &b, int &c) {
  read(a);
  read(b);
  read(c);
}
inline void read(long long &a, long long &b, long long &c) {
  read(a);
  read(b);
  read(c);
}
inline int read() {
  int x;
  read(x);
  return x;
}
inline long long qpow(long long a, long long b, long long p) {
  long long ret = 1;
  for (; b; b >>= 1, a = a * a % p)
    if (b & 1) ret = ret * a % p;
  return ret;
}
inline long long qpow(long long a, long long b) {
  long long ret = 1;
  for (; b; b >>= 1, a = a * a % mod)
    if (b & 1) ret = ret * a % mod;
  return ret;
}
inline long long qmul(long long a, long long b, long long p) {
  long long ret = 0;
  for (; b; b >>= 1, a = (a << 1) % p)
    if (b & 1) {
      ret = ret + a;
      if (ret >= p)
        ret -= p;
      else if (ret < 0)
        ret += p;
    };
  return ret;
}
inline long long qmul(long long a, long long b) {
  long long ret = 0;
  for (; b; b >>= 1, a = (a << 1) % mod)
    if (b & 1) {
      ret = ret + a;
      if (ret >= mod)
        ret -= mod;
      else if (ret < 0)
        ret += mod;
    };
  return ret;
}
inline void judge() {
  freopen("data.in", "r", stdin);
  freopen("data.out", "w", stdout);
}
inline void gen() { freopen("data.in", "w", stdout); }
int n;
struct edge {
  int t, ne;
} e[N];
int head[N], cnt;
void adde(int a, int b) {
  e[++cnt] = (edge){b, head[a]};
  head[a] = cnt;
}
int siz[N], a[N];
void dfs(int x, int f) {
  siz[x] = 1;
  for (int k = head[x]; k; k = e[k].ne)
    if (e[k].t != f) {
      dfs(e[k].t, x);
      siz[x] += siz[e[k].t];
    }
}
long long fac[N], ifac[N];
inline long long C(long long n, long long m) {
  if (n < 0 || m < 0 || n < m) return 0;
  return fac[n] * ifac[m] % mod * ifac[n - m] % mod;
}
const int G = 5;
long long A[N], B[N], D[N], rev[N];
void ntt(long long *a, int n, int opt) {
  int l = 0;
  for (int o = 1; o < n; o <<= 1) l++;
  for (int i = (0); i < (n); i++)
    rev[i] = (rev[i >> 1] >> 1) | ((i & 1) << (l - 1));
  for (int i = (0); i < (n); i++)
    if (i > rev[i]) swap(a[i], a[rev[i]]);
  for (int i = 1; i < n; i <<= 1) {
    int wn = qpow(G, (mod - 1) / (2 * i), mod);
    if (opt == -1) wn = qpow(wn, mod - 2, mod);
    for (int j = 0; j < n; j += i + i) {
      int w = 1;
      for (int k = (0); k < (i); k++) {
        int x = a[j + k], y = 1ll * a[j + k + i] * w % mod;
        a[j + k] = (x + y) % mod;
        a[j + k + i] = (x - y + mod) % mod;
        w = 1ll * w * wn % mod;
      }
    }
  }
  if (opt == -1) {
    int iv = qpow(n, mod - 2, mod);
    for (int i = (0); i < (n); i++) a[i] = 1ll * a[i] * iv % mod;
  }
}
int main() {
  read(n);
  for (int i = (1); i <= (n - 1); i++) {
    int a, b;
    read(a, b);
    adde(a, b);
  }
  dfs(1, 0);
  for (int i = (2); i <= (n); i++) a[siz[i]]++, a[n - siz[i]]++;
  fac[0] = 1;
  for (int i = (1); i <= (n); i++) fac[i] = fac[i - 1] * i % mod;
  ifac[n] = qpow(fac[n], mod - 2, mod);
  for (int i = (n - 1); i >= (0); i--) ifac[i] = ifac[i + 1] * (i + 1) % mod;
  for (int i = (0); i <= (n); i++)
    A[i] = 1ll * a[i] * fac[i] % mod, B[i] = ifac[n - i];
  int len = 1;
  while (len <= n + n) len <<= 1;
  ntt(A, len, 1);
  ntt(B, len, 1);
  for (int i = (0); i <= (len); i++) D[i] = 1ll * A[i] * B[i] % mod;
  ntt(D, len, -1);
  for (int k = (1); k <= (n); k++) {
    long long res = C(n, k) * n % mod;
    res = (res + mod - D[k + n] * ifac[k] % mod) % mod;
    cout << res << endl;
  }
}
