#include <bits/stdc++.h>

#define _overload(_1,_2,_3,name,...) name
#define _rep(i,n) _range(i,0,n)
#define _range(i,a,b) for(int i=int(a);i<int(b);++i)
#define rep(...) _overload(__VA_ARGS__,_range,_rep,)(__VA_ARGS__)

#define _rrep(i,n) _rrange(i,n,0)
#define _rrange(i,a,b) for(int i=int(a)-1;i>=int(b);--i)
#define rrep(...) _overload(__VA_ARGS__,_rrange,_rrep,)(__VA_ARGS__)

#define _all(arg) begin(arg),end(arg)
#define uniq(arg) sort(_all(arg)),(arg).erase(unique(_all(arg)),end(arg))
#define getidx(ary,key) lower_bound(_all(ary),key)-begin(ary)
#define clr(a,b) memset((a),(b),sizeof(a))
#define bit(n) (1LL<<(n))
#define popcount(n) (__builtin_popcountll(n))

using namespace std;

template<class T>bool chmax(T &a, const T &b) { return (a<b)?(a=b,1):0;}
template<class T>bool chmin(T &a, const T &b) { return (b<a)?(a=b,1):0;}

using ll=long long;
using R=long double;
const R EPS=1e-9L; // [-1000,1000]->EPS=1e-8 [-10000,10000]->EPS=1e-7
inline int sgn(const R& r){return(r > EPS)-(r < -EPS);}
inline R sq(R x){return sqrt(max(x,0.0L));}

const int dx[8]={1,0,-1,0,1,-1,-1,1};
const int dy[8]={0,1,0,-1,1,1,-1,-1};

// Problem Specific Parameter:

// Description: グラフの型定義(これは最小費用流)
// Verifyed: Many Diffrent Problem 

//Appropriately Changed
using edge=struct{int to;};
using G=vector<vector<edge>>;

int n;
G graph;

void add_edge(G &graph,int from,int to){ 
	graph[from].push_back({to});
	graph[to].push_back({from});
}

const int nmax= 200010;
ll sz[nmax],num[nmax];

int dfs(int v,int p){
	sz[v]=1;
	for(auto &e:graph[v]){
		if(e.to == p) continue;
		sz[v] += dfs(e.to,v);
		num[sz[e.to]]++;
		num[n-sz[e.to]]++;
	}

	return sz[v];
}

inline ll power(ll a,ll n,ll mod){
	ll b = 1LL;
	while(n){
		if(n&1) b = b * a %mod;
		a = a * a % mod;
		n >>= 1;
	}
	return b;
}

inline ll inv(ll a,ll mod){
	return power(a,mod-2,mod);
}


void ntt(vector<ll> &a,bool inv_flag,ll mod){
	const int n=a.size();

	ll base=power(5LL,(mod-1)/n,mod);
	if(inv_flag) base=inv(base,mod); 

	int rj=0;
	rep(j,1,n-1){
		for(int k=n>>1;k>(rj^=k);k>>=1);
		if(j<rj) swap(a[j],a[rj]);
 	}

 	for(int m=1;m<n;m<<=1){
 		const ll wn=power(base,n/2/m,mod);
		ll w=1LL;

		rep(p,m){
			for(int s=p;s<n;s+=2*m){
				ll u=a[s],v=1LL * a[s+m] * w % mod;
				a[s]=(u+v)%mod,a[s+m]=(u+mod-v)%mod;
			}
			w=1LL * w * wn % mod;
		}
	}

	const ll n_inv=inv(n,mod);
	if(inv_flag) rep(i,n) a[i]=1LL*a[i]*n_inv%mod;
}



vector<ll> convolution(vector<ll> a,vector<ll> b,ll mod){
	int ntt_size=1;
	while (ntt_size < a.size()+b.size()) ntt_size <<= 1;
	
	a.resize(ntt_size),ntt(a,0,mod);
	b.resize(ntt_size),ntt(b,0,mod);
	
	vector<ll> c(ntt_size,0LL);
	rep(i,ntt_size) c[i]=1LL*a[i]*b[i]%mod;

	ntt(c,1,mod);
	return c;
}

const ll mod=924844033LL;

ll I[nmax];
void inv_table(int n){I[1]=1LL;rep(i,2,n+1) I[i]=I[mod%i]*(mod-mod/i)%mod;}

ll F[nmax],IF[nmax];
void fact_table(int n){F[0]=IF[0]=1LL; rep(i,1,n+1) F[i]=F[i-1]*i%mod,IF[i]=IF[i-1]*I[i]%mod;}

inline ll comb(ll n,ll k){ 
	if(k < 0 or n < k) return 0;
	return 1LL * F[n] * IF[k] % mod * IF[n-k] % mod;
}

int main(void){
	cin >> n;
	graph = G(n);

	rep(i,n-1){
		int a,b;
		cin >> a >> b;
		add_edge(graph,a-1,b-1);
	}

	dfs(0,-1);
	
	inv_table(n),fact_table(n);

	vector<ll> a(n+1),b(n+1);
	rep(i,n+1) a[n-i] = 1LL * num[i] * F[i] %mod;
	rep(i,n+1) b[i] = IF[i];

	//rep(i,n+1) cout << i << " " << a[i] << " " << b[i] << endl;

	vector<ll> c = convolution(a,b,mod);

	//rep(i,n+1) cout << i << " " << c[i] << endl;
	
	rep(k,1,n+1){
		ll ans = n * comb(n,k) % mod;
		ll cur = c[n-k] * IF[k] % mod;
		ans = (ans + mod - cur) % mod;
		cout << ans << endl;
	}

	return 0;
}

// (3-1) 3 C 3 - 2LL*(1 C 3 * 2 C 3 )

// 辺の本数は N-1本
// 各辺が使用されるかどうか?  (N-1) nCk  - \sum_{i=1}^{N-1} {a_i C k - b_i C k}

// 各辺が使用されるかどうか?  (N-1) nCk  - \sum_{i=1}^{N-1} {a_i C k - b_i C k}

// まとめる (N-1) nCk  - \sum_{i=1}^{N-1} n_i  {iCk }

//  nCk = n!/(k!(n-k)!) 

// まとめる \sum_{i=1}^{N-1} n_i  {iCk } =  \sum_{i=1}^{N-1} n_i  i!/(K! (i-K)!)

// まとめる 1/K! \sum_{i=1}^{N-1} n_i i! /(i-K)!)

// c_i = (n_i*i!) 
// d_i = (i-K)!

// c_i = \sum_{K=-inf}^inf a_k b_i-k

// 0 1  2  3  4 0 0 0 0 0
//-4 -3 -2 -1 0 0 0 0 0 0
// 0 * -4 , 1 * -4 + 0 * -3  2* -4 + 1 * -3 + 0 * -2


Measured memory_bytes: 42320