//                                                     /*[*/#include<stdio.h>//
//                         #include<stdlib.h>//]++++[->++[->+>++++<<]<][(c)2013]
//                        #ifndef                                           e//[o
//                       #include<string.h>//]![misaka.c,size=3808,crc=d0ec3b36][
//                      #define e                                           0x1//
//                     typedef struct{int d,b,o,P;char*q,*p;}f;int p,q,d,b,_=0//|
//                  #include __FILE__//]>>>[->+>++<<]<[-<<+>>>++<]>>+MISAKA*IMOUTO
//                #undef e//[->[-<<+<+<+>>>>]<<<<<++[->>+>>>+<<<<<]>+>+++>+++[>]]b
//             #define e(c)/**/if((_!=__LINE__?(_=__LINE__):0)){c;}//[20002,+[-.+]
//            ,O,i=0,Q=sizeof(f);static f*P;static FILE*t;static const char*o[]={//
//          "\n\40\"8oCan\40not\40open %s\n\0aaFbfeccdeaEbgecbbcda6bcedd#e(bbed$bbd",
//        "a6bgcdbbccd#ead$c*bcdea7bccde*b$eebbdda9bsdbeccdbbecdcbbcceed#eaa&bae$cbe",
//       "e&cbdd$eldbdeedbbdede)bdcdea&bbde1bedbbcc&b#ccdee&bdcdea'bbcd)e'bad(bae&bccd",
//      "e&bbda1bdcdee$bbce#b$c&bdedcd%ecdca4bhcdeebbcd#e$b#ecdcc$bccda7bbcc#e#d%c*bbda",
//     ">bad/bbda"};static int S(){return(o[p][q]);}static/**/int/**/Z=0  ;void/**/z(int//
//    l){if(/**/Z-l){Z=l;q++;if(p<b*5&&!S()){p+=b;q=0;}}}int main(int I,    /**/char**l){//
//   d=sizeof(f*);if(1<(O=_)){b=((sizeof(o)/sizeof(char*))-1)/4;q=22; p=     0;while(p<b*5){
//  /*<*/if(Z-1){d=S()>96;i=S()-(d?96:32) ;q++;if(p<b*5&&!S()){p+=b;  q=      0;}Z=1;}/*[[*/
//  while(i){_=o[0][S()-97];I=_-10?b:1;   for( ;I--;)putchar(_ );if   (!      --i||d)z(~i );}
// if(p==b*5&&O){p-=b;O--;}}return 0U;   }if(! (P=( f*)calloc /*]*/  (Q        ,I)))return 1;
// {;}for(_=p=1;p<I;p++){e(q=1);while    (q<   p&&  strcmp(  l[p     ]         ,l[(q)]))++  q;
// t=stdin;if(q<p){(void)memcpy/* "      */    (&P  [p],&P   [q     ]          ,Q);continue ;}
//if(strcmp(l[p],"-")){t=fopen(l         [     p]   ,"rb"   )                  ;if(!t ){{;}  ;
//printf(05+*o,l[p ]);return+1;                      {;}                       }}_=b= 1<<16   ;
//*&O=5;do{if(!(P[p].q=realloc   (P[p].q,(P[p].P     +=       b)+1))){return   01;}O   &=72   /
//6/*][*/;P[p].o+=d=fread(P[p]      .q       +P[     p           ].       o,  1,b,t)   ;}//
// while(d==b)      ;P [p].q[       P[       p]                  .o       ]=  012;d    =0;
// e(fclose(t        )  );P         [p]      .p                  =P[      p]  .q;if    (O)
// {for(;d<P[            p]          .o     ;d=                   q+     1)    {q=     d;
//  while(q<P[                        p].o&&P[                    p].q[q]-     10     ){
//  q++;}b=q-d;                         _=P                         [p].        d     ;
//  if(b>_){/*]b                                                                */
//   P[p].d=b;}{;                                                                }
//   #undef/*pqdz'.*/  e//                                                      ;
//   #define/*s8qdb]*/e/**/0                                                   //
//   //<<.<<.----.>.<<.>++.++<                                              .[>]
//   /*P[*/P[p].b++;continue;}}}t=                                       stdout;
//  for (p=1;p<I;p++){/**/if(P[p].b>i                               ){i=P[p].b;}}
// if  (O){for(p=0;p<i;p++){q=0;/*[*/while(I               >++q){_=P[q].p-P[q ].q;
//b=   0;if(_<P[q ].o){while(012-*P[q].p)     {putchar(*(P[q].p++));b++;}P[q]. p++;
//}   ;while (P[  q].d>b++)putchar(040);}             putchar(10);}return 0;}p   =1;
//   for(;   p<I   ;p++)fwrite(P[p] .q,P[              p].o,1,t);return 0 ;}//
//  #/*]     ]<.    [-]<[-]<[- ]<[    -]<               [-  ]<;*/elif  e    //b
// |(1        <<     ( __LINE__        /*               >>   `*//45))  |     01U
//             #                       /*               */     endif            //
#include <iostream>
#include <cstdio>
#include <cstring>
#define MOD 924844033
using namespace std;
const int MAXN = 200005;
struct Edge{
    int to,next;
}e[MAXN<<1];
int head[MAXN],n,fac[MAXN],inv[MAXN];
typedef long long ll;
inline int ksm(int x,int k)
{
	int ret=1;
	while(k){
		if(k&1)ret=(ll)ret*x%MOD;
		x=(ll)x*x%MOD;
		k>>=1;
	}
	return ret;
}
inline void init(int n)
{
	fac[0]=1;
	for(int i=1;i<=n;++i)
		fac[i]=(ll)fac[i-1]*i%MOD;
	inv[n]=ksm(fac[n],MOD-2);
	for(int i=n-1;i>=0;--i)
		inv[i]=(ll)inv[i+1]*(i+1)%MOD;
}
int G=5,revG=ksm(G,MOD-2);
struct NTT{
	int a[1<<20],n,w[1<<20];
	inline void ntt(int v)
	{
		for(int i=0,j=0;i<n;++i){
			if(i<j)swap(a[i],a[j]);
			for(int l=(n>>1);(j^=l)<l;l>>=1);
		}
		w[0]=1;
		for(int i=2;i<=n;i<<=1){
			int g=(v?ksm(revG,MOD/i):ksm(G,MOD/i));
			for(int j=i>>1;j>=0;j-=2)w[j]=w[j>>1];
			for(int j=1;j<(i>>1);j+=2)w[j]=(ll)w[j-1]*g%MOD;
			for(int j=0;j<n;j+=i){
				int *p1=a+j,*p2=p1+(i>>1);
				for(int l=0;l<(i>>1);++l){
					int o=(ll)p2[l]*w[l]%MOD;
					p2[l]=((ll)p1[l]-o+MOD)%MOD;
					p1[l]=((ll)p1[l]+o+MOD)%MOD;
				}
			}
		}
		if(v){
			int revn=ksm(n,MOD-2);
			for(int i=0;i<n;++i)
				a[i]=(ll)a[i]*revn%MOD;
		}
	}
}x,y;
int k[MAXN],size[MAXN];
void dfs(int x,int fa)
{
	size[x]=1;
	for(int i=head[x];i;i=e[i].next){
		int v=e[i].to;
		if(v==fa)continue;
		dfs(v,x);
		size[x]+=size[v];
	}
	if(x!=1)++k[size[x]],++k[n-size[x]];
}
int ans[MAXN],cnt;
inline void insert(int u,int v)
{
	e[++cnt].to=v,e[cnt].next=head[u],head[u]=cnt;
	e[++cnt].to=u,e[cnt].next=head[v],head[v]=cnt;
}
inline int C(int m,int n)
{
	return (ll)fac[m]*inv[m-n]%MOD*inv[n]%MOD;
}
int main()
{
    scanf("%d",&n);
	init(n);
	for(int i=1;i<n;++i){
		int u,v;
		scanf("%d%d",&u,&v);
		insert(u,v);
	}
	dfs(1,0);
	for(int i=1;i<=n;++i)
		x.a[i]=(ll)fac[i]*k[i]%MOD,y.a[i]=inv[n-i];
	int len=1;
	while(len<=(n<<1))len<<=1;
	x.n=y.n=len;
	x.ntt(0),y.ntt(0);
	for(int i=0;i<len;++i)
		x.a[i]=(ll)x.a[i]*y.a[i]%MOD;
	x.ntt(1);
	for(int i=n+1;i<=n*2;++i)
		printf("%d\n",((ll)n*C(n,i-n)%MOD-(ll)inv[i-n]*x.a[i]%MOD+MOD)%MOD);
	return 0;
}


Measured memory_bytes: 29440