#include<bits/stdc++.h>
#define reg register int
#define il inline
#define fi first
#define se second
#define mk(a,b) make_pair(a,b)
#define numb (ch^'0')
#define pb push_back
#define solid const auto &
#define enter cout<<endl
#define pii pair<int,int>
using namespace std;
typedef long long ll;
template<class T>il void rd(T &x){
    char ch;x=0;bool fl=false;while(!isdigit(ch=getchar()))(ch=='-')&&(fl=true);
    for(x=numb;isdigit(ch=getchar());x=x*10+numb);(fl==true)&&(x=-x);}
template<class T>il void output(T x){if(x/10)output(x/10);putchar(x%10+'0');}
template<class T>il void ot(T x){if(x<0) putchar('-'),x=-x;output(x);putchar(' ');}
template<class T>il void prt(T a[],int st,int nd){for(reg i=st;i<=nd;++i) ot(a[i]);putchar('\n');}
namespace Modulo{
const int mod=924844033;
il int ad(int x,int y){return x+y>=mod?x+y-mod:x+y;}
il int sub(int x,int y){return ad(x,mod-y);}
il int mul(int x,int y){return (ll)x*y%mod;}
il void inc(int &x,int y){x=ad(x,y);}
il void inc2(int &x,int y){x=mul(x,y);}
il int qm(int x,int y=mod-2){int ret=1;while(y){if(y&1) ret=mul(x,ret);x=mul(x,x);y>>=1;}return ret;}
template<class ...Args>il int ad(const int a,const int b,const Args &...args) {return ad(ad(a,b),args...);}
template<class ...Args>il int mul(const int a,const int b,const Args &...args) {return mul(mul(a,b),args...);}
}
using namespace Modulo;
namespace Miracle{
const int N=2e5+5;
const int G=5;
int GI;
int f[8*N],g[8*N];
int jie[N],inv[N];
int C(int n,int m){
	if(n<0||m<0||n<m) return 0;
	return mul(jie[n],inv[m],inv[n-m]);
}
int rev[8*N];
int init(int n){
	int m=1;
	for(m=1;m<n;m<<=1);
	for(reg i=0;i<m;++i){
		rev[i]=((rev[i>>1])>>1)|((i&1)?(m>>1):0);
	}
	return m;
}
void NTT(int *f,int n,int c){
	for(reg i=0;i<n;++i){
		if(i<rev[i]) swap(f[i],f[rev[i]]);
	}
	for(reg p=2;p<=n;p<<=1){
		int gen;
		if(c==1) gen=qm(G,(mod-1)/p);
		else gen=qm(GI,(mod-1)/p);
		for(reg l=0;l<n;l+=p){
			int buf=1;
			for(reg k=l;k<l+p/2;++k){
				int tmp=mul(f[k+p/2],buf);
				f[k+p/2]=ad(f[k],mod-tmp);
				f[k]=ad(f[k],tmp);
				buf=mul(buf,gen);
			}
		}
	}
	if(c==-1){
		int iv=qm(n);
		for(reg i=0;i<n;++i){
			f[i]=mul(f[i],iv);
		}
	}
}
int n;
struct node{
	int nxt,to;
}e[2*N];
int hd[N],cnt;
void add(int x,int y){
	e[++cnt].nxt=hd[x];
	e[cnt].to=y;
	hd[x]=cnt;
}
int sz[N];
void dfs(int x,int fa){
	sz[x]=1;
	for(reg i=hd[x];i;i=e[i].nxt){
		int y=e[i].to;
		if(y==fa) continue;
		dfs(y,x);
		sz[x]+=sz[y];
		++f[sz[y]];
	}
	++f[n-sz[x]];
}
int main(){
	GI=qm(G);
    rd(n);
    int x,y;
    for(reg i=1;i<n;++i){
    	rd(x);rd(y);
    	add(x,y);add(y,x);
    }
    dfs(1,0);
    jie[0]=1;
    for(reg i=1;i<=n;++i) jie[i]=mul(jie[i-1],i);
    inv[n]=qm(jie[n]);
    for(reg i=n-1;i>=0;--i) inv[i]=mul(inv[i+1],i+1);
    
    //prt(f,0,n);
    for(reg i=0;i<=n;++i){
    	f[i]=mul(f[i],jie[i]);
    }
   // prt(f,0,n);
    reverse(f,f+n+1);
   // prt(f,0,n);
    for(reg i=0;i<=n;++i){
    	g[i]=inv[i];
    }
    int m=init(n+n+2);
   // prt(g,0,n);
    NTT(f,m,1);
    NTT(g,m,1);
    for(reg i=0;i<=m;++i) f[i]=mul(f[i],g[i]);
    NTT(f,m,-1);
    
   // prt(f,0,n);
    for(reg k=1;k<=n;++k){
    	int v=f[n-k];
    	v=mul(v,inv[k]);
    	int ans=sub(mul(n,C(n,k)),v);
    	printf("%d\n",ans);
    }
    return 0;
}

}
signed main(){
    Miracle::main();
    return 0;
}

/*
   Author: *Miracle*
*/

Measured memory_bytes: 28544