// Crt. 2020-01-09  07:54:10
#include <algorithm>
#include <iostream>
#include <cstring>
#include <cstdio>
#define N 400005
using namespace std;
const int Mod = 924844033;

inline int MOD(int x) {
    return x >= Mod ? x - Mod : x;
}

inline int fsp(int x, int p = Mod - 2) {
    int res = 1;
    while (p) {
        if (p & 1) res = 1ll * res * x % Mod;
        x = 1ll * x * x % Mod, p >>= 1;
    } return res;
}

// {{{
namespace M {
    int stk[100], top;
    void spt(int x) {
        for (int i = 2; 1ll * i * i <= x; ++i) {
            if (x % i) continue;
            stk[++top] = i;
            while (x % i == 0) x /= i;
        } if (x - 1) stk[++top] = x;
    }
    int getg(int p) {
        spt(p - 1);
        for (int i = 2; i < p; ++i) {
            bool check = 1;
            for (int j = 1; j <= top; ++j)
                if (fsp(i, (p - 1) / stk[j]) == 1) { check = 0; break; };
            if (check) return i;
        } puts(":("), exit(0);
    }
}
// }}}

int n, m, sz[N], fac[N], ifac[N];
int tot, fir[N], nxt[N << 1], to[N << 1];
int c[N << 2], d[N << 2], R[N << 2];

inline int C(int x, int y) {
    return x < y ? 0 : 1ll * fac[x] * ifac[y] % Mod * ifac[x - y] % Mod;
}

inline void addE(int u, int v) {
    nxt[++tot] = fir[u], fir[u] = tot, to[tot] = v;
}

void dfs(int u, int p) {
    sz[u] = 1;
    for (int i = fir[u], v; i; i = nxt[i]) {
        v = to[i];
        if (v == p) continue;
        dfs(v, u);
        sz[u] += sz[v];
        ++c[sz[v]];
    } if (n - sz[u]) ++c[n - sz[u]];
}

void ntt(int *a, int op) {
    for (int i = 0; i < m; ++i)
        if (i < R[i]) swap(a[i], a[R[i]]);
    for (int h = 2; h <= m; h <<= 1) {
        int wn = fsp(5, (Mod - 1) / h);
        if (op == -1) wn = fsp(wn);
        for (int i = 0, mid = h / 2; i < m; i += h) {
            int w = 1;
            for (int j = 0; j < mid; ++j) {
                int x = a[i + j], y = 1ll * w * a[i + j + mid] % Mod;
                a[i + j] = MOD(x + y), a[i + j + mid] = MOD(x + Mod - y);
                w = 1ll * w * wn % Mod;
            }
        }
    } if (~op) return ;
    for (int i = 0, inv = fsp(m); i < m; ++i)
        a[i] = 1ll * a[i] * inv % Mod;
}

int main(){
#ifdef LOCAL_JUDGE
    freopen("work.in", "r", stdin);
    freopen("work.out", "w", stdout);
#endif

    cin >> n;
    for (int i = fac[0] = 1; i <= n; ++i)
        fac[i] = 1ll * fac[i - 1] * i % Mod;
    ifac[n] = fsp(fac[n]);
    for (int i = n; i >= 1; --i)
        ifac[i - 1] = 1ll * ifac[i] * i % Mod;

    for (int i = 1, u, v; i < n; ++i)
        scanf("%d%d", &u, &v), addE(u, v), addE(v, u);

    dfs(1, 0);

    for (int i = 1; i <= n; ++i) {
        c[i] = 1ll * 1ll * c[i] * fac[i] % Mod;
        d[i] = ifac[n - i];
    }

    int L = 0; m = 1; while (m <= n * 2) m <<= 1, ++L; --L;
    for (int i = 0; i < m; ++i) R[i] = (R[i >> 1] >> 1) | ((i & 1) << L);

//    for (int i = 0; i < m; ++i)
//        cout << c[i] << " " << d[i] << endl; cout << endl;

    ntt(c, 1), ntt(d, 1);
    for (int i = 0; i < m; ++i)
        c[i] = 1ll * c[i] * d[i] % Mod;
    ntt(c, -1);


    for (int i = 1; i <= n; ++i) {
        int res = MOD(1ll * C(n, i) * n % Mod + Mod - 1ll * c[i + n] * ifac[i] % Mod);
        printf("%d\n", res);
    }

	return 0;
}


Measured memory_bytes: 34688