#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
const int N=1<<19,mod=924844033 ;//1e9+7;
int read(){
	int x=0;
	char ch=getchar();
	while (!isdigit(ch))
		ch=getchar();
	while (isdigit(ch))
		x=(x<<1)+(x<<3)+(ch^48),ch=getchar();
	return x;
}
int Pow(int x,int y){
	int ans=1;
	for (;y;y>>=1,x=1LL*x*x%mod)
		if (y&1)
			ans=1LL*ans*x%mod;
	return ans;
}
void Add(int &x,int y){
	if ((x+=y)>=mod)
		x-=mod;
}
void Del(int &x,int y){
	if ((x-=y)<0)
		x+=mod;
}
int Add(int x){
	return x>=mod?x-mod:x;
}
int Del(int x){
	return x<0?x+mod:x;
}
int n;
vector <int> e[N];
int size[N],tax[N];
void dfs(int x,int pre){
	size[x]=1;
	for (auto y : e[x])
		if (y!=pre){
			dfs(y,x);
			size[x]+=size[y];
		}
	tax[size[x]]++;
	tax[n-size[x]]++;
}
int w[N],R[N];
vector <int> A,B;
namespace poly{
    const double pi=acos(-1.0);
    struct Comp{
        double r,i;
        Comp(){}
        Comp(double _r,double _i){
            r=_r,i=_i;
        }
        friend Comp operator + (Comp a,Comp b){
            return Comp(a.r+b.r,a.i+b.i);
        }
        friend Comp operator - (Comp a,Comp b){
            return Comp(a.r-b.r,a.i-b.i);
        }
        friend Comp operator * (Comp a,Comp b){
            return Comp(a.r*b.r-a.i*b.i,a.i*b.r+a.r*b.i);
        }
    }a0[N],a1[N],b0[N],b1[N],A[N],B[N],C[N],w[N];
    int R[N];
    void FFT(Comp a[],int n){
        for (int i=0;i<n;i++)
            if (i<R[i])
                swap(a[i],a[R[i]]);
        for (int t=n>>1,d=1;d<n;d<<=1,t>>=1)
            for (int i=0;i<n;i+=d<<1)
                for (int j=0;j<d;j++){
                    Comp tmp=w[t*j]*a[i+j+d];
                    a[i+j+d]=a[i+j]-tmp;
                    a[i+j]=a[i+j]+tmp;
                }
    }
    vector <int> Mul(vector <int> a,vector <int> b){
        static vector <int> ans;
        ans.clear();
        int n,d;
        for (n=1,d=0;n<a.size()+b.size();n<<=1,d++);
        for (int i=0;i<n;i++){
            R[i]=(R[i>>1]>>1)|((i&1)<<(d-1));
            w[i]=Comp(cos(pi*2/n*i),sin(pi*2/n*i));
        }
        for (int i=0;i<n;i++)
            a0[i]=a1[i]=b0[i]=b1[i]=Comp(0,0);
        for (int i=0;i<a.size();i++)
            a0[i].r=a[i]&32767,a1[i].r=a[i]>>15;
        for (int i=0;i<b.size();i++)
            b0[i].r=b[i]&32767,b1[i].r=b[i]>>15;
        FFT(a0,n),FFT(a1,n),FFT(b0,n),FFT(b1,n);
        for (int i=0;i<n;i++){
            A[i]=a0[i]*b0[i];
            B[i]=a1[i]*b1[i];
            C[i]=a0[i]*b1[i]+a1[i]*b0[i];
            w[i].i=-w[i].i;
        }
        FFT(A,n),FFT(B,n),FFT(C,n);
        for (int i=0;i<n;i++){
            int v=0;
            Add(v,(LL)(A[i].r/n+0.5)%mod);
            Add(v,(((LL)(B[i].r/n+0.5)%mod)<<30)%mod);
            Add(v,(((LL)(C[i].r/n+0.5)%mod)<<15)%mod);
            ans.push_back(v);
        }
//        while (!ans.empty()&&!ans.back())
//            ans.pop_back();
        return ans;
    }
}
int Fac[N],Inv[N];
int C(int n,int m){
	if (m<0||m>n)
		return 0;
	return 1LL*Fac[n]*Inv[m]%mod*Inv[n-m]%mod;
}
int main(){
	n=read();
	for (int i=1;i<=n;i++)
		e[i].clear();
	for (int i=1;i<n;i++){
		int a=read(),b=read();
		e[a].push_back(b);
		e[b].push_back(a);
	}
	memset(tax,0,sizeof tax);
	dfs(1,0);
	Fac[0]=Inv[0]=1;
	for (int i=1;i<=n;i++){
		Fac[i]=1LL*Fac[i-1]*i%mod;
		Inv[i]=1LL*Inv[i-1]*Pow(i,mod-2)%mod;
	}
	A.push_back(0);
	for (int i=1;i<n;i++)
		A.push_back(1LL*tax[i]*Fac[i]%mod);
	for (int i=0;i<=n;i++)
		B.push_back(Inv[n-i]);
	A=poly::Mul(A,B);
	for (int i=1;i<=n;i++)
		A[i+n]=1LL*A[i+n]*Inv[i]%mod;
	for (int i=1;i<=n;i++)
		printf("%lld\n",(1LL*C(n,i)*n-A[i+n]+mod)%mod);
	return 0;
}

Measured memory_bytes: 113268