One day, Takahashi was given the following problem from Aoki:

* You are given a tree with N vertices and an integer K. The vertices are numbered 1 through N. The edges are represented by pairs of integers (a_i, b_i).
* For a set S of vertices in the tree, let f(S) be the minimum number of the vertices in a subtree of the given tree that contains all vertices in S.
* There are <image> ways to choose K vertices from the trees. For each of them, let S be the set of the chosen vertices, and find the sum of f(S) over all <image> ways.
* Since the answer may be extremely large, print it modulo 924844033(prime).



Since it was too easy for him, he decided to solve this problem for all K = 1,2,...,N.

Constraints

* 2 ≦ N ≦ 200,000
* 1 ≦ a_i, b_i ≦ N
* The given graph is a tree.

Input

The input is given from Standard Input in the following format:


N
a_1 b_1
a_2 b_2
:
a_{N-1} b_{N-1}


Output

Print N lines. The i-th line should contain the answer to the problem where K=i, modulo 924844033.

Examples

Input

3
1 2
2 3


Output

3
7
3


Input

4
1 2
1 3
1 4


Output

4
15
13
4


Input

7
1 2
2 3
2 4
4 5
4 6
6 7


Output

7
67
150
179
122
45
7
#include<bits/stdc++.h>
#define ll long long
#define mod 924844033
#define N 200009
#define M 600009
using namespace std;

int n,m,tot,fst[N],pnt[N<<1],nxt[N<<1],fa[N],sz[N];
int fac[N],inv[N],w[2][M],pos[M],a[M],na[M],b[M];
int ksm(int x,int y){
	int z=1; for (; y; y>>=1,x=(ll)x*x%mod) if (y&1) z=(ll)z*x%mod;
	return z;
}
void add(int x,int y){
	pnt[++tot]=y; nxt[tot]=fst[x]; fst[x]=tot;
}
void pwk(int n){
	for (m=1; m<=n; m<<=1);
	int i,x=ksm(5,(mod-1)/m);
	for (i=w[0][0]=w[1][0]=1; i<m; i++)
		w[0][i]=w[1][m-i]=(ll)w[0][i-1]*x%mod;
	for (i=1; i<m; i++) pos[i]=pos[i>>1]>>1|((i&1)?m>>1:0);
}
void dfs(int x){
	int i,y; sz[x]=1;
	for (i=fst[x]; i; i=nxt[i]){
		y=pnt[i];
		if (y!=fa[x]){
			fa[y]=x; dfs(y);
			sz[x]+=sz[y];
			a[sz[y]]++;
		}
	}
	if (x>1) a[n-sz[x]]++;
}
void fft(int *a,int n,int p){
	int i,j,k,l,x,u,v;
	for (i=0; i<n; i++) na[pos[i]]=a[i];
	for (i=0; i<n; i++) a[i]=na[i];
	for (k=1; k<n; k<<=1)
		for (i=0,x=n/k>>1; i<n; i+=(k<<1))
			for (j=i,l=0; j<i+k; j++,l+=x){
				u=a[j]; v=(ll)a[j+k]*w[p][l]%mod;
				a[j]=(u+v)%mod; a[j+k]=(u-v+mod)%mod;
			}
	if (p){
		x=ksm(n,mod-2);
		for (i=0; i<n; i++) a[i]=(ll)a[i]*x%mod;
	}
}
int main(){
	scanf("%d",&n);
	int i,x,y;
	for (i=1; i<n; i++){
		scanf("%d%d",&x,&y);
		add(x,y); add(y,x);
	}
	dfs(1);
	fac[0]=inv[0]=inv[1]=1;
	for (i=1; i<=n; i++) fac[i]=(ll)fac[i-1]*i%mod;
	for (i=2; i<=n; i++) inv[i]=mod-(ll)inv[mod%i]*(mod/i)%mod;
	for (i=2; i<=n; i++) inv[i]=(ll)inv[i-1]*inv[i]%mod;
	for (i=0; i<=n; i++) b[n-i]=inv[i];
	for (i=1; i<=n; i++) a[i]=(ll)a[i]*fac[i]%mod;
	pwk(n<<1);
	fft(a,m,0); fft(b,m,0);
	for (i=0; i<m; i++) a[i]=(ll)a[i]*b[i]%mod;
	fft(a,m,1);
	for (i=1; i<=n; i++)
		printf("%lld\n",((ll)n*fac[n]%mod*inv[i]%mod*inv[n-i]%mod-(ll)a[i+n]*inv[i]%mod+mod)%mod);
	return 0;
}