#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int MAXN=1e5+5,MOD=998244353;
vector <int> G[MAXN],E[MAXN],Q[MAXN];
int n,dfn[MAXN],dcnt,st[MAXN][20];
int bit(int x) { return 1<<x; }
int cmp(int x,int y) { return dfn[x]<dfn[y]?x:y; }
int LCA(int x,int y) {
	if(x==y) return x;
	int l=min(dfn[x],dfn[y])+1,r=max(dfn[x],dfn[y]),k=__lg(r-l+1);
	return cmp(st[l][k],st[r-bit(k)+1][k]);
}
void dfs1(int u,int fz) {
	dfn[u]=++dcnt,st[dcnt][0]=fz;
	for(int v:G[u]) if(v^fz) dfs1(v,u);
}
bool vis[MAXN];
ll f[MAXN][2];
void dfs2(int u) {
	array <ll,3> g={1,0,0};
	for(int v:E[u]) {
		dfs2(v);
		g[2]=(g[2]*f[v][0]+g[1]*f[v][1])%MOD;
		g[1]=(g[1]*f[v][0]+g[0]*f[v][1])%MOD;
		g[0]=g[0]*f[v][0]%MOD;
	}
	f[u][0]=(g[2]+g[0])%MOD,f[u][1]=g[1];
	if(vis[u]) {
		f[u][1]=(f[u][1]+g[0])%MOD;
		f[u][0]=(f[u][0]+g[1]+g[0])%MOD;
	}
}
ll solve(vector<int>&w) {
	if(w.empty()) return 1;
	for(int i:w) vis[i]=true;
	sort(w.begin(),w.end(),[&](int x,int y){ return dfn[x]<dfn[y]; });
	for(int i=1,m=w.size();i<m;++i) w.push_back(LCA(w[i-1],w[i]));
	sort(w.begin(),w.end(),[&](int x,int y){ return dfn[x]<dfn[y]; });
	w.erase(unique(w.begin(),w.end()),w.end());
	for(int i=1;i<(int)w.size();++i) E[LCA(w[i-1],w[i])].push_back(w[i]);
	int rt=w[0];
	dfs2(rt);
	ll ans=f[rt][0];
	for(int i:w) E[i].clear(),f[i][0]=f[i][1]=0,vis[i]=false;
	return ans;
}
signed main() {
	freopen("degree.in","r",stdin);
	freopen("degree.out","w",stdout);
	ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
	cin>>n;
	for(int i=1,u,v;i<n;++i) cin>>u>>v,G[u].push_back(v),G[v].push_back(u);
	dfs1(1,0);
	for(int k=1;k<20;++k) for(int i=1;i+bit(k)-1<=n;++i) {
		st[i][k]=cmp(st[i][k-1],st[i+bit(k-1)][k-1]);
	}
	for(int i=1;i<=n;++i) for(int x=1;x<=(int)G[i].size();++x) Q[x].push_back(i);
	for(int x=1;x<n;++x) cout<<solve(Q[x])<<"\n";
	return 0;
}