#include <bits/stdc++.h>

using namespace std;

const int mod = 924844033, maxn = (1 << 19) + 10;

namespace FFT {
	struct comp {
		double r, i;

		comp() {}
		comp(double r, double i): r(r), i(i) {}
	} w[maxn];

	comp operator +(const comp &x, const comp &y) {
		return comp(x.r + y.r, x.i + y.i);
	}

	comp operator -(const comp &x, const comp &y) {
		return comp(x.r - y.r, x.i - y.i);
	}

	comp operator *(const comp &a, const comp &b) {
		return  comp(a.r * b.r - a.i * b.i, a.r * b.i + a.i * b.r);
	}

	inline comp conj(const comp &x) {
		return comp(x.r, -x.i);
	}

	int N, bit_rev[maxn];
	double iN;

	void prepare(int n) {
		for (N = 1; N <= n; N <<= 1);
		N <<= 1;
		iN = 1. / (double) N;
		double t = 2. * acos(-1) * iN;
		for (int i = 0, j = 0; i < N; ++i) {
			bit_rev[i] = j;
			for (int k = N >> 1; (j ^= k) < k; k >>= 1);
			double alpha = t * i;
			w[i] = comp(cos(alpha), sin(alpha));
		}
		return;
	}

	inline void dft(comp *a) {
		for (int i = 0; i < N; ++i) {
			if(bit_rev[i] < i) {
				swap(a[i], a[bit_rev[i]]);
			}
		}
		for (int hl = 1, l = 2, stp = N >> 1; l <= N; hl = l, l <<= 1, stp >>= 1) {
			for (int i = 0; i < N; i += l) {
				comp *l = a + i, *r = l + hl, *p = w;
				for (int j = 0; j < hl; ++j, ++l, ++r, p += stp) {
					comp t = *r * *p;
					*r = *l - t;
					*l = *l + t;
				}
			}
		}
		return;
	}

	void mul(int *A, int *B, int *C) {
		static comp da[maxn], db[maxn], dc[maxn], dd[maxn], a[maxn], b[maxn];
		for (int i = 0; i < N; ++i) {
			(A[i] += mod) %= mod;
			(B[i] += mod) %= mod;
			a[i] = comp(A[i] & 32767, A[i] >> 15);
			b[i] = comp(B[i] & 32767, B[i] >> 15);
		}
		dft(a);
		dft(b);
		for (int i = 0; i < N; ++i) {
			static comp dfta, dftb, dftc, dftd;
			int j = N - i & N - 1;
			dfta = (a[i] + conj(a[j])) * comp(0.5, 0);
			dftb = (a[i] - conj(a[j])) * comp(0, -0.5);
			dftc = (b[i] + conj(b[j])) * comp(0.5, 0);
			dftd = (b[i] - conj(b[j])) * comp(0, -0.5);
			da[j] = dfta * dftc;
			db[j] = dfta * dftd;
			dc[j] = dftb * dftc;
			dd[j] = dftb * dftd;
		}
		for (int i = 0; i < N; ++i) {
			a[i] = da[i] + db[i] * comp(0, 1);
			b[i] = dc[i] + dd[i] * comp(0, 1);
		}
		dft(a);
		dft(b);
		for (int i = 0; i < N; ++i) {
			static int da, db, dc, dd;
			da = (long long) (a[i].r * iN + .5) % mod;
			db = (long long) (a[i].i * iN + .5) % mod;
			dc = (long long) (b[i].r * iN + .5) % mod;
			dd = (long long) (b[i].i * iN + .5) % mod;
			C[i] = (da + ((long long) (db + dc) << 15) + ((long long) dd << 30)) % mod;
		}
		return;
	}
}

int n, siz[maxn], a[maxn], b[maxn], c[maxn], fac[maxn], ifac[maxn];
vector<int> g[maxn];

void dfs(int u, int p) {
	siz[u] = 1;
	for (int v: g[u])  {
		if(v != p) {
			dfs(v, u);
			siz[u] += siz[v];
		}
	}
	--a[siz[u]];
	--a[n - siz[u]];
	return;
}

int pow_mod(int x, int n) {
	int y = 1;
	while(n) {
		if(n & 1) {
			y = (long long) y * x % mod;
		}
		x = (long long) x * x % mod;
		n >>= 1;
	}
	return y;
}

int main() {
	scanf("%d", &n);
	for (int i = 1; i < n; ++i) {
		int u, v;
		scanf("%d%d", &u, &v);
		g[u].push_back(v);
		g[v].push_back(u);
	}
	a[n] = n + 1;
	dfs(1, 0);
	fac[0] = 1;
	for (int i = 1; i <= n; ++i) {
		fac[i] = (long long) fac[i - 1] * i % mod;
		a[i] = (long long) fac[i] * a[i] % mod;
	}
	ifac[n] = pow_mod(fac[n], mod - 2);
	for (int i = n; i; --i) {
		b[n - i] = ifac[i];
		ifac[i - 1] = (long long) ifac[i] * i % mod;
	}
	b[n] = ifac[0];
	FFT::prepare(n);
	FFT::mul(a, b, c);
	for (int k = 1, *ans = c + n; k <= n; ++k) {
		printf("%d\n", (long long) (ans[k] + mod) * ifac[k] % mod);
	}
	return 0;
}


Measured memory_bytes: 103040