// Original C++ solution (slower):
#include<bits/stdc++.h>

typedef long long ll;

using namespace std;

inline int rd(){

	char ch=getchar(); int i=0,f=1;

	while(!isdigit(ch)){if(ch=='-')f=-1;ch=getchar();}

	while(isdigit(ch)){i=(i<<1)+(i<<3)+ch-'0';ch=getchar();}

	return i*f; 

}

inline void W(int x){

	static int buf[50];

	if(!x){putchar('0');return;}

	if(x<0){putchar('-');x=-x;}

	while(x){buf[++buf[0]]=x%10;x/=10;}

	while(buf[0])putchar(buf[buf[0]--]+'0');

}

const int N=2e5+50,Mod=924844033,G=5;

int n,g[N],v[N*2],nt[N*2],ec;

int sze[N],fa[N],cnt[N];

int fac[N],invfac[N];

inline int power(int a,int b){

	int rs=1;

	for(;b;b>>=1,a=(ll)a*a%Mod)

		if(b&1)rs=(ll)rs*a%Mod;

	return rs;

}

inline void add(int x,int y){nt[++ec]=g[x];g[x]=ec;v[ec]=y;}

inline void dfs(int x,int y){	sze[x]=1; fa[x]=y;

	for(int e=g[x];e;e=nt[e]){

		if(v[e]!=y){

			dfs(v[e],x);

			sze[x]+=sze[v[e]];

		}

	}

	if(x!=1)++cnt[sze[x]];

}

int A[N*8],B[N*8],ans[N];

namespace fft{

	int k,pos[N*8];

	inline void init(int len){

		for(k=1;k<len;k<<=1); k<<=1;

		for(int i=1;i<k;i++)

			pos[i]=(i&1)?((pos[i>>1]>>1)^(k>>1)):(pos[i>>1]>>1);

	}

	inline void dft(int *a){

		for(int i=1;i<k;i++)

			if(pos[i]>i)swap(a[pos[i]],a[i]);

		for(int bl=1;bl<k;bl<<=1){

			int tl=bl<<1,wn=power(G,(Mod-1)/tl);

			for(int bg=0;bg<k;bg+=tl){

				int w=1;

				for(int j=0;j<bl;++j){

					int &t1=a[bg+j],&t2=a[bg+j+bl],t3=(ll)t2*w%Mod;

					t2=(t1-t3+Mod)%Mod;

					t1=(t1+t3)%Mod;

					w=(ll)w*wn%Mod;

				}

			}

		}

	}

	inline void dft(int *a,int *b){

		for(int i=0;i<k;i++) a[i]=(ll)a[i]*b[i]%Mod;

		dft(a); reverse(a+1,a+k);

		for(int i=0;i<k;i++) a[i]=(ll)a[i]*power(k,Mod-2)%Mod;

	}

}

int main(){

	n=rd();

	for(int i=1;i<n;i++){

		int x=rd(),y=rd();

		add(x,y); add(y,x);

	}

	dfs(1,0);

	fac[0]=(invfac[0]=1); 

	for(int i=1;i<=n;i++) fac[i]=(ll)fac[i-1]*i%Mod;

	for(int i=1;i<=n;i++) invfac[i]=power(fac[i],Mod-2);

	for(int i=0;i<=n;i++) A[i]=(ll)cnt[n-i]*fac[n-i]%Mod, B[i]=invfac[i];

	fft::init(n+1);

 	fft::dft(A); fft::dft(B);

	fft::dft(A,B);

	for(int i=1;i<=n;i++) ans[i]=(ans[i]-A[n-i]+Mod)%Mod;

	memset(A,0,sizeof(A));

	for(int i=0;i<=n;i++) A[i]=(ll)cnt[i]*fac[n-i]%Mod;

	fft::dft(A); fft::dft(A,B);

	for(int i=1;i<=n;i++) ans[i]=(ans[i]-A[n-i]+Mod)%Mod;

	for(int i=1;i<=n;i++){

		int t=(ll)fac[n]*invfac[n-i]%Mod*invfac[i]%Mod;

		ans[i]=(ll)ans[i]*invfac[i]%Mod;

		ans[i]=(ans[i]+(ll)t*n%Mod)%Mod;

	}

	for(int i=1;i<=n;i++)W(ans[i]),putchar('\n');

}

// Optimized solution to the same problem (faster):
#include <bits/stdc++.h>

using namespace std;



const int RLEN=1<<18|1;

inline char nc() {

	static char ibuf[RLEN],*ib,*ob;

	(ib==ob) && (ob=(ib=ibuf)+fread(ibuf,1,RLEN,stdin));

	return (ib==ob) ? -1 : *ib++;

} 

inline int rd() {

	char ch=nc(); int i=0,f=1;

	while(!isdigit(ch)) {if(ch=='-')f=-1; ch=nc();}

	while(isdigit(ch)) {i=(i<<1)+(i<<3)+ch-'0'; ch=nc();}

	return i*f;

}

inline void W(int x) {

	static int buf[50];

	if(!x) {putchar('0'); return;}

	if(x<0) {putchar('-'); x=-x;}

	while(x) {buf[++buf[0]]=x%10; x/=10;}

	while(buf[0]) {putchar(buf[buf[0]--]+'0');}

}



const int N=2e5+50,mod=924844033,G=5;

inline int add(int x,int y) {return (x+y>=mod) ? (x+y-mod) : (x+y);}

inline int dec(int x,int y) {return (x-y<0) ? (x-y+mod) : (x-y);}

inline int mul(int x,int y) {return (long long)x*y%mod;}

inline int power(int a,int b,int rs=1) {for(;b;b>>=1,a=mul(a,a)) if(b&1) rs=mul(rs,a); return rs;}



int n,k,sze[N],fac[N],ifac[N];

int f[N*8],g[N*8],pos[N*8],w[N*8];

vector <int> edge[N];

inline int C(int a,int b) {return (a<b) ? 0 : (mul(fac[a],mul(ifac[b],ifac[a-b])));}

inline void dfs(int x,int fa) {

	sze[x]=1;

	for(auto v:edge[x]) if(v!=fa)

		dfs(v,x), sze[x]+=sze[v];

	if(x!=1)++f[sze[x]]; ++f[n-sze[x]];

}

inline void init(int nn) {

	for(k=1;k<=nn;k<<=1);

	for(int i=1;i<k;i++) pos[i]=(i&1) ? ((pos[i>>1]>>1)^(k>>1)) : (pos[i>>1]>>1);

}

inline void dft(int *a) {

	for(int i=1;i<k;i++) if(pos[i]>i) swap(a[pos[i]],a[i]);

	for(int bl=1;bl<k;bl<<=1) {

		int tl=bl<<1,wn=power(G,(mod-1)/tl);

		w[0]=1; for(int i=1;i<bl;i++) w[i]=mul(w[i-1],wn);

		for(int bg=0;bg<k;bg+=tl)

			for(int j=0;j<bl;++j) {

				int &t1=a[bg+j],&t2=a[bg+j+bl],t=mul(t2,w[j]);

				t2=dec(t1,t); t1=add(t1,t);

			}

	}

}

inline void mul(int *a,int *b,int nn) {

	init(nn); dft(a); dft(b); 

	for(int i=0;i<k;i++) a[i]=mul(a[i],b[i]);

	dft(a); reverse(a+1,a+k); const int inv=power(k,mod-2);

	for(int i=0;i<k;i++) a[i]=mul(a[i],inv);

}

int main() {

	n=rd();

	fac[0]=1; for(int i=1;i<=n;i++) fac[i]=mul(fac[i-1],i);

	ifac[n]=power(fac[n],mod-2); for(int i=n-1;~i;i--) ifac[i]=mul(ifac[i+1],i+1);

	for(int i=1;i<n;i++) {

		int x=rd(), y=rd();

		edge[x].push_back(y);

		edge[y].push_back(x);

	} dfs(1,0);

	for(int i=0;i<=n;i++) f[i]=mul(f[i],fac[i]);

	for(int i=0;i<=n;i++) g[i]=ifac[i];

	reverse(f,f+n+1); mul(f,g,2*n);

	for(int i=1;i<=n;i++) {

		int tot=mul(n,C(n,i));

		W(dec(tot,mul(f[n-i],ifac[i])));

		putchar('\n');

	}

}

// Fastest known solution for this problem: