/*

                   _ooOoo_
                  o8888888o
                  88" . "88
                  (| -_- |)
                  O\  =  /O
               ____/`---'\____
             .'  \\|     |//  `.
            /  \\|||  :  |||//  \
           /  _||||| -:- |||||-  \
           |   | \\\  -  /// |   |
           | \_|  ''\---/''  |   |
           \  .-\__  `-`  ___/-. /
         ___`. .'  /--.--\  `. . __
      ."" '<  `.___\_<|>_/___.'  >'"".
     | | :  `- \`.;`\ _ /`;.`/ - ` : | |
     \  \ `-.   \_ __\ /__ _/   .-` /  /
======`-.____`-.___\_____/___.-`____.-'======
                   `=---='
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
                    prayer
*/

// g++ -std=c++11 a.cpp
#include<iostream>
#include<vector>
#include<string>
#include<algorithm>	
#include<map>
#include<set>
#include<unordered_map>
#include<utility>
#include<cmath>
#include<random>
#include<cstring>
#include<queue>
#include<stack>
#include<bitset>
#include<cstdio>
#include<sstream>
#include<iomanip>
#include<assert.h>
#include<typeinfo>
#define loop(i,a,b) for(int i=a;i<b;i++) 
#define rep(i,a) loop(i,0,a)
#define FOR(i,a) for(auto i:a)
#define pb push_back
#define all(in) in.begin(),in.end()
#define shosu(x) fixed<<setprecision(x)
#define show1d(v) rep(_,v.size())cout<<" "<<v[_];cout<<endl;
#define show2d(v) rep(__,v.size()){rep(_,v[__].size())cout<<" "<<v[__][_];cout<<endl;}
using namespace std;
//kaewasuretyuui
typedef long long ll;
#define int ll
typedef int Def;
typedef pair<Def,Def> pii;
typedef vector<Def> vi;
typedef vector<vi> vvi;
typedef vector<pii> vp;
typedef vector<vp> vvp;
typedef vector<string> vs;
typedef vector<double> vd;
typedef vector<vd> vvd;
typedef pair<Def,pii> pip;
typedef vector<pip>vip;
// #define mt make_tuple
// typedef tuple<int,int,int> tp;
// typedef vector<tp> vt;
template<typename A,typename B>bool cmin(A &a,const B &b){return a>b?(a=b,true):false;}
template<typename A,typename B>bool cmax(A &a,const B &b){return a<b?(a=b,true):false;}
//template<class C>constexpr int size(const C &c){return (int)c.size();}
//template<class T,size_t N> constexpr int size(const T (&xs)[N])noexcept{return (int)N;}
const double PI=acos(-1);
const double EPS=1e-9;
Def inf = sizeof(Def) == sizeof(long long) ? 2e18 : 1e9+10;
int dx[]={0,1,0,-1};
int dy[]={1,0,-1,0};


#define MOD 924844033
#define R 5

ll powmod(ll a,ll b,ll m=MOD){
	ll out=1;
	ll p=a%m;
	while(b){
		if(b&1)out=out*p%m;
		p=p*p%m;
		b>>=1;
	}
	return out;
}

void ntt(vi& a,bool B){
	int n=a.size(),h=0;
	while(1<<h<n)h++;
	rep(i,n){
		int j=0;
		rep(k,h)if(i&1<<k)j+=1<<(h-k-1);
		if(i<j)swap(a[i],a[j]);
	}
	for(int i=1;i<n;i*=2){
		ll w=powmod(R,(MOD-1)/(i*2));
		if(B)w=powmod(w,MOD-2,MOD);
		for(int j=0;j<n;j+=i*2){
			ll wn=1;
			rep(k,i){
				ll s=a[j+k],t=a[i+j+k]*wn%MOD;
				a[j+k]=(s+t)%MOD;
				a[i+j+k]=(s-t+MOD)%MOD;
				(wn*=w)%=MOD;
			}
		}
	}
	if(B){
		ll v=powmod(n,MOD-2,MOD);
		rep(i,n)(a[i]*=v)%=MOD;
	}
}
 
vi Conv(vi a,vi b){
	int s=a.size()+b.size()-1,t=1;
	while(t<s)t*=2;
	a.resize(t);
	b.resize(t);
	ntt(a,0);ntt(b,0);
	rep(i,t)(a[i]*=b[i])%=MOD;
	ntt(a,1);
	a.resize(s);
	return a;
}

#define M 500000
vector<ll> fact;
bool h=false;
void init(){
	h=true;
	fact=vector<ll>(M);
	fact[0]=fact[1]=1;
	loop(i,2,M)fact[i]=fact[i-1]*i%MOD;
}
//nCr
ll nCr(ll n,ll r,ll m=MOD){
	if(!h)init();
	if(n<0||r<0||n<r)return 0;//??????
	ll out=fact[n]*powmod(fact[r]*fact[n-r]%m,m-2,m)%m;
	return out;
}
int n;
vi co;
vvi G;
int dfs(int a,int p){
	int s=1;
	rep(i,G[a].size()){
		int to=G[a][i];
		if(to==p)continue;
		int b=dfs(to,a);
		co[b]++;
		co[n-b]++;
		s+=b;
	}
	return s;
}
signed main(){
	init();
	cin>>n;
	co=vi(n+1);
	G=vvi(n);
	rep(i,n-1){
		int a,b;
		cin>>a>>b;
		a--;b--;
		G[a].pb(b);
		G[b].pb(a);
	}
	dfs(0,-1);
	vi a(n+1),b(n+1);
	rep(i,n+1){
		a[i]=co[i]*fact[i]%MOD;
		b[n-i]=powmod(fact[i],MOD-2,MOD);
	}
	vi c=Conv(a,b);
	rep(i,n)cout<<(n*nCr(n,i+1)%MOD+MOD-c[n+i+1]*powmod(fact[i+1],MOD-2,MOD)%MOD)%MOD<<endl;
}















Measured memory_bytes: 37864