#include <bits/stdc++.h>
using namespace std;
#define ri register int
typedef long long ll;
#define rll register ll
namespace io {
	const int SIZE = (1 << 21) + 1;
	char ibuf[SIZE], *iS, *iT, obuf[SIZE], *oS = obuf, *oT = oS + SIZE - 1, c, qu[55]; int f, qr;
	// getchar
	#define gc() (iS == iT ? (iT = (iS = ibuf) + fread (ibuf, 1, SIZE, stdin), (iS == iT ? EOF : *iS ++)) : *iS ++)
	// print the remaining part
	inline void flush () {
		fwrite (obuf, 1, oS - obuf, stdout);
		oS = obuf;
	}
	// putchar
	inline void putc (char x) {
		*oS ++ = x;
		if (oS == oT) flush ();
	}
	// input a signed integer
	template <class I>
	inline void gi (I &x) {
		for (f = 1, c = gc(); c < '0' || c > '9'; c = gc()) if (c == '-') f = -1;
		for (x = 0; c <= '9' && c >= '0'; c = gc()) x = (x << 1) + (x << 3) + (c & 15); x *= f;
	}
	// input a letter
	template <class I>
	inline void get (I &x) {
		for (c = gc(); c < 'A' || c > 'Z'; c = gc()) ;
		x = c;
	}
	// input a string
	inline void read (char *s){
		for(c = gc(); c < 'A' || c > 'Z'; c = gc()) ;
		for(; c >= 'A' && c <= 'Z'; c = gc()) *++s = c;
		*++s = '\0';
	}
	// print a signed integer
	template <class I>
	inline void print (I x) {
		if (!x) putc ('0'); if (x < 0) putc ('-'), x = -x;
		while (x) qu[++ qr] = x % 10 + '0',  x /= 10;
		while (qr) putc (qu[qr --]);
	}
	//no need to call flush at the end manually!
	struct Flusher_ {~Flusher_(){flush();}}io_flusher_;
}
using io :: gi;
using io :: get;
using io :: read;
using io :: putc;
using io :: print;
const int N=2e5+5;
int n,tot,head[N],nxt[N<<1],adj[N<<1],fac[N],ifac[N];
inline void addedge(ri x,ri y){
	nxt[++tot]=head[x];
	adj[head[x]=tot]=y;
}
const int L=1<<19|1,mod=924844033;
int a[L],b[L];
inline int mu(ri x,ri y){
	rll s=(ll)x*y;
	return s>=mod?s%mod:s;
}
inline int fpow(ri a,ri b){
	ri ans=1;
	for(;b;b>>=1,a=mu(a,a))
		if(b&1) ans=mu(ans,a);
	return ans;
}
namespace ntt{ // by NaCly_Fish	
	int rt[L],rev[L],lim,l;
	
	inline void init(ri n){
	    ri w,i;
		lim=1;l=0;
	    while(lim<=n) lim<<=1,++l;
	    w=fpow(5,mod-1>>l);
	    rt[lim>>1]=1;
	    for(i=(lim>>1)+1;i^lim;++i) rt[i]=mu(rt[i-1],w);
	    for(i=(lim>>1)-1;i>0;--i) rt[i]=rt[i<<1];
	    for(i=1;i^lim;++i) rev[i]=rev[i>>1]>>1|(i&1)<<l-1;
	}
	
	inline void transform(int *f,ri lim,ri type){
	    if(type==-1) reverse(f+1,f+lim);
	    static unsigned long long a[L];
	    ri x,shift=l-__builtin_ctz(lim),i,mid,j,k;
	    for(i=0;i^lim;++i) a[rev[i]>>shift]=f[i];
	    for(mid=1;mid^lim;mid<<=1)
	        for(j=0;j^lim;j+=mid<<1)
	            for(k=0;k^mid;++k)
	                x=a[j|k|mid]*rt[mid|k]%mod,
	                a[j|k|mid]=a[j|k]-x+mod,
	                a[j|k]+=x;
	    for(i=0;i^lim;++i) f[i]=a[i]>=mod?a[i]%mod:a[i];
	    if(type==1) return;
	    x=fpow(lim,mod-2);
	    for(i=0;i^lim;++i) f[i]=mu(f[i],x);
	}
}
using namespace ntt; 
inline int dfs(ri x,ri fa){
	ri y,i,sons,sz=1;
	for(i=head[x];i;i=nxt[i])
		if((y=adj[i])!=fa)
			sons=dfs(y,x),
			--a[sons],
			sz+=sons;
	--a[n-sz];
	++a[n];
	return sz;
}
int main(){
//	freopen("easypro.in","r",stdin);
//	freopen("easypro.out","w",stdout);
	ri i,x,y;
	gi(n);
	for(i=1;i^n;++i) gi(x),gi(y),addedge(x,y),addedge(y,x);
	dfs(1,0);
	a[0]=0;
//	for(i=0;i<=n;++i) printf("a %d %d\n",i,a[i]);
	fac[0]=1;
	for(i=1;i<=n;++i) fac[i]=mu(fac[i-1],i);
	ifac[n]=fpow(fac[n],mod-2);
	for(i=n;i;--i) ifac[i-1]=mu(ifac[i],i);
	for(i=0;i<=n;++i)
		a[i]=a[i]>0?mu(a[i],fac[i]):(a[i]<0?mu(mod+a[i],fac[i]):0),
		b[n-i]=ifac[i];
//	for(i=0;i<=n;++i) printf("%d ",a[i]); puts("");
//	for(i=0;i<=n;++i) printf("%d ",b[i]); puts("");
	init(n<<1);
	transform(a,lim,1);
	transform(b,lim,1);
	for(i=0;i^lim;++i) a[i]=mu(a[i],b[i]);
	transform(a,lim,-1);
//	for(i=0;i<=n;++i) printf("%d ",a[i]); puts("");
	for(i=1;i<=n;++i) print(mu(a[n+i],ifac[i])),putc('\n');
	return 0;
}

Measured memory_bytes: 35872