#include <bits/stdc++.h>
using namespace std;
//mt19937 mrand(chrono::high_resolution_clock::now().time_since_epoch().count());
//int rnd(int x) { return mrand()%x;}
typedef long long ll;
ll gcd(ll a,ll b){return b==0?a:gcd(b,a%b);}
typedef long double LD;
const LD PI = acos((LD)-1);
const int N=900800;
const ll md=924844033;
ll M=(1<<15)-1;
ll qp(ll a,ll b,ll mod){
	ll ret=1;
	for(;b;b>>=1){
		if(b&1) ret=ret*a%mod;
		a=a*a%mod;
	}
	return ret;
}
struct C {
	LD r, i;
	C(LD r = 0, LD i = 0): r(r), i(i) {}
	C conj() {
		return C(r,-i);
	}
};
C operator + (const C& a, const C& b) {
	return C(a.r + b.r, a.i + b.i);
}
C operator - (const C& a, const C& b) {
	return C(a.r - b.r, a.i - b.i);
}
C operator * (const C& a, const C& b) {
	return C(a.r * b.r - a.i * b.i, a.r * b.i + a.i * b.r);
}
void FFT(C x[], int n, int p) {
	for (int i = 0, t = 0; i < n; ++i) {
		if (i > t) swap(x[i], x[t]);
		for (int j = n >> 1; (t ^= j) < j; j >>= 1);
	}
	for (int h = 2; h <= n; h <<= 1) {
		C wn(cos(p * 2 * PI / h), sin(p * 2 * PI / h));
		for (int i = 0; i < n; i += h) {
			C w(1, 0), u;
			for (int j = i, k = h >> 1; j < i + k; ++j) {
				u = x[j + k] * w;
				x[j + k] = x[j] - u;
				x[j] = x[j] + u;
				w = w * wn;
			}
		}
	}
	if (p == -1)
		for (int i=0; i<n; i++)
			x[i].r /= n;
}
void MTT(ll A[],ll B[],ll CC[],int len) {
	for(int i = 0;i < len; ++i) (A[i] += md) %= md, (B[i] += md) %= md;
    static C a[N], b[N], Da[N], Db[N], Dc[N], Dd[N];
    for(int i = 0;i < len; ++i) a[i] = C(A[i] & M, A[i] >> 15);
    for(int i = 0;i < len; ++i) b[i] = C(B[i] & M, B[i] >> 15);
    FFT(a,len,1); FFT(b,len,1);
    for(int i = 0;i < len; ++i) {
        int j = (len - i) & (len - 1); static C da, db, dc, dd;
        da = (a[i] + a[j].conj()) * C(0.5, 0);
        db = (a[i] - a[j].conj()) * C(0, -0.5);
        dc = (b[i] + b[j].conj()) * C(0.5, 0);
        dd = (b[i] - b[j].conj()) * C(0, -0.5);
        Da[j] = da * dc; Db[j] = da * dd; Dc[j] = db * dc; Dd[j] = db * dd;
    }
    for(int i = 0;i < len; ++i) a[i] = Da[i] + Db[i] * C(0, 1);
    for(int i = 0;i < len; ++i) b[i] = Dc[i] + Dd[i] * C(0, 1);
    FFT(a,len,1); FFT(b,len,1);
    for(int i = 0;i < len; ++i) {
        ll da = (ll) (a[i].r / len + 0.5) % md;
        ll db = (ll) (a[i].i / len + 0.5) % md;
        ll dc = (ll) (b[i].r / len + 0.5) % md;
        ll dd = (ll) (b[i].i / len + 0.5) % md;
        CC[i] = (da + ((ll)(db + dc) << 15) + ((ll)dd << 30)) % md; 
    }
}
ll fac[N],ifac[N];
vector<int> G[200200];
int sz[200200];
void dfs(int pos,int fa){
	sz[pos]=1;
	for(int i:G[pos]){
		if(i==fa) continue;
		dfs(i,pos);
		sz[pos]+=sz[i];
	}
	return;
}
ll a[N],b[N];
ll ans[N],tmp[N];
int main(){
	int n;
	scanf("%d",&n);
	for(int i=1;i<n;i++){
		int f,t;
		scanf("%d%d",&f,&t);
		G[f].push_back(t);
		G[t].push_back(f);
	}
	dfs(1,-1);
	ifac[0]=fac[0]=1;
	for(int i=1;i<N;i++) fac[i]=fac[i-1]*i%md;
	ll iv=qp(fac[N-1],md-2,md);
	for(int i=N-1;i>=1;i--){
		ifac[i]=iv;
		iv=iv*i%md;
	}
	int len=1;
	while(len<(2*n)+1) len<<=1;
	for(int i=2;i<=n;i++){
		a[sz[i]]++;
	}
	for(int i=0;i<len;i++){
		a[i]=a[i]*fac[i]%md;
	}
	for(int i=0;i<=n;i++){
		b[n-i]=ifac[i];
	}
	MTT(a,b,tmp,len);
	for(int i=1;i<=n;i++){
		ans[i]=(ans[i]-tmp[n+i]*ifac[i]%md+md)%md;
	}
	for(int i=0;i<len;i++) a[i]=b[i]=tmp[i]=0;
	for(int i=2;i<=n;i++){
		a[n-sz[i]]++;
	}
	for(int i=0;i<len;i++){
		a[i]=a[i]*fac[i]%md;
	}
	for(int i=0;i<=n;i++){
		b[n-i]=ifac[i];
	}
	MTT(a,b,tmp,len);
	for(int i=1;i<=n;i++){
		ans[i]=(ans[i]-tmp[n+i]*ifac[i]%md+md)%md;
	}
	for(int i=1;i<=n;i++){
		printf("%lld\n",(ans[i]+(fac[n]*ifac[i]%md*ifac[n-i]%md)*n%md)%md);
	}
	return 0;
}


Measured memory_bytes: 225796