// I need some holiday
// But I don't wish that everyday is holiday
// Because I didn't bear the pain
// Because it wasn't a true freedom
//         ——『イヤホンと蝉時雨』·Orangestar

#include <bits/stdc++.h>

using namespace std;

typedef long long LL;
typedef unsigned int UI;
typedef pair<int, int> pii;

#define DEBUG(...) fprintf(stderr, __VA_ARGS__)
#define MP make_pair
#define fst first
#define snd second
#define SZ(u) ((int) (u).size())
#define ALL(u) (u).begin(), (u).end()

inline void proc_status()
{
	ifstream t("/proc/self/status");
	cerr << string(istreambuf_iterator<char>(t), istreambuf_iterator<char>()) << endl;
}

template<typename T> inline int chkmin(T &a, const T &b) { return b < a ? a = b, 1 : 0; }
template<typename T> inline int chkmax(T &a, const T &b) { return b > a ? a = b, 1 : 0; }
template<typename T> inline T sqr(const T &val) { return val * val; }

namespace fastIO
{
	const int MAX_BUFFER_SIZE = 1 << 16;

	char buffer[MAX_BUFFER_SIZE], *cur = buffer, *ed = buffer;

	inline char getc() { return cur == ed && (ed = (cur = buffer) + fread(buffer, 1, MAX_BUFFER_SIZE, stdin), cur == ed) ? EOF : *cur++; }
}
using fastIO::getc;

template<typename T> inline T read()
{
	register T sum(0), fg(1);
	register char ch(getc());
	for(; !isdigit(ch); ch = getc()) if(ch == '-') fg = -1;
	for(;  isdigit(ch); ch = getc()) sum = sum * 10 - '0' + ch;
	return sum * fg;
}

inline char *read_str(char *s)
{
	register char ch(getc());
	while(!isgraph(ch)) ch = getc();
	for(; isgraph(ch); ch = getc()) *s++ = ch;
	*s = '\0';
	return s;
}

// END tpl.

const int MOD = 924844033, inv2 = (MOD + 1) / 2;

inline int fpm(int x, int y)
{
	int res = 1;
	for(; y; y >>= 1, x = (LL) x * x % MOD) if(y & 1) res = (LL) res * x % MOD;
	return res;
}
inline int inv(int x) { assert(x != 0); return fpm(x, MOD - 2); }

namespace MATH
{
	const int n = (int) 2e6;

	int fac[n + 5], ifac[n + 5];

	inline void init()
	{
		fac[0] = 1;
		for(int i = 1; i <= n; ++i) fac[i] = (LL) fac[i - 1] * i % MOD;
		ifac[n] = inv(fac[n]);
		for(int i = n - 1; i >= 0; --i) ifac[i] = (LL) ifac[i + 1] * (i + 1) % MOD;
	}

	inline int C(int N, int M) { return N < 0 || M < 0 || N < M ? 0 : (LL) fac[N] * ifac[N - M] % MOD * ifac[M] % MOD; }
}
using MATH::fac;
using MATH::ifac;
using MATH::C;

namespace NTT
{
	const int MAX_LEN = 1 << 21;

	int rev[MAX_LEN], gn[MAX_LEN], len, dis, inv_len;

	inline void init(int L)
	{
		for(len = 1, dis = 0; len <= L; len <<= 1) ++dis;
		for(int i = 0; i < len; ++i) rev[i] = (rev[i >> 1] >> 1) | ((i & 1) << (dis - 1));

		gn[0] = 1;
		for(int G = fpm(5, (MOD - 1) / len), i = 1; i <= len; ++i) gn[i] = (LL) gn[i - 1] * G % MOD;
		inv_len = inv(len);
	}

	inline void DFT(int *x, int type)
	{
		for(int i = 0; i < len; ++i) if(i < rev[i]) swap(x[i], x[rev[i]]);
		for(int k = 2; k <= len; k <<= 1)
			for(int j = 0; j < len; j += k)
				for(int i = 0; i < k >> 1; ++i)
				{
					int X = x[i + j], Y = (LL) x[i + j + k / 2] * (type == +1 ? gn[len / k * i] : gn[len - len / k * i]) % MOD;
					x[i + j] = (X + Y) % MOD;
					x[i + j + k / 2] = (X - Y) % MOD;
				}
		if(type == -1) for(int i = 0; i < len; ++i) x[i] = (LL) x[i] * inv_len % MOD;
	}

	inline void mul(int *f, int N, int *g, int M, int *s)
	{
		if(N + M == 0) { s[0] = (LL) f[0] * g[0] % MOD; return; }

		static int F[MAX_LEN], G[MAX_LEN], S[MAX_LEN];

		init(N + M);
		for(int i = 0; i < len; ++i) F[i] = i <= N ? f[i] : 0;
		for(int i = 0; i < len; ++i) G[i] = i <= M ? g[i] : 0;
		DFT(F, +1);
		DFT(G, +1);
		for(int i = 0; i < len; ++i) S[i] = (LL) F[i] * G[i] % MOD;
		DFT(S, -1);
		for(int i = 0; i <= N + M; ++i) s[i] = S[i];
	}
}

const int MAXN = (int) 2e5;

int n;

vector<int> adj[MAXN + 5];

inline void input()
{
	n = read<int>();
	for(int i = 1; i < n; ++i)
	{
		int u = read<int>(), v = read<int>();
		adj[u].push_back(v);
		adj[v].push_back(u);
	}
}

int size[MAXN + 5], cnt[MAXN + 5];

inline void dfs(int u, int fa)
{
	size[u] = 1;
	for(auto v : adj[u]) if(v != fa)
	{
		dfs(v, u);
		size[u] += size[v];
		++cnt[size[v]];
	}
	++cnt[n - size[u]];
}

inline void solve()
{
	dfs(1, 0);

	static int ans[MAXN + 5];

	for(int i = 1; i <= n; ++i) ans[i] = (LL) (C(n - 1, i - 1) + C(n - 1, i)) % MOD * n % MOD;

	static int f[MAXN + 5], g[MAXN + 5], s[MAXN * 2 + 5];

	for(int i = 0; i <= n; ++i) f[i] = (LL) cnt[i] * fac[i] % MOD;
	for(int i = 0; i <= n; ++i) g[i] = ifac[n - i];
	NTT::mul(f, n, g, n, s);
	for(int i = 1; i <= n; ++i) (ans[i] -= (LL) ifac[i] * s[n + i] % MOD) %= MOD;

	for(int i = 1; i <= n; ++i) printf("%d\n", (ans[i] + MOD) % MOD);
}

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

	MATH::init();
	input();
	solve();

	return 0;
}




Measured memory_bytes: 58752