#include <bits/stdc++.h>
using namespace std;
long long n, p, q, ans[200069], dsu[200069], sm[200069], szp, szq;
vector<long long> cc[200069];
const long long mo = 998244353;
void mrg(long long x, long long y)
{
y = cc[dsu[y]][0];
x = cc[dsu[x]][0];
while (cc[y].size())
{
ans[cc[y].back()] = (ans[cc[y].back()]+sm[y]-sm[x]+mo)%mo;
dsu[cc[y].back()] = x;
cc[x].push_back(cc[y].back());
cc[y].pop_back();
}
}
long long fe(long long x, long long y)
{
long long res = 1;
while (y)
{
if (y%2) res = (res*x)%mo;
x = (x*x)%mo;
y /= 2;
}
return res;
}
int main()
{
long long i;
scanf("%lld", &n);
for (i=1; i<=n; i++)
{
dsu[i] = i;
cc[i].push_back(i);
}
for (i=1; i<=n-1; i++)
{
scanf("%lld%lld", &p, &q);
szp = cc[dsu[p]].size();
szq = cc[dsu[q]].size();
printf("p = %lld q = %lld szp = %lld szq = %lld dsu[p] = %lld dsu[q] = %lld\n", p, q, szp, szq, dsu[p], dsu[q]);
if (szp<szq) swap(p, q);
(sm[dsu[p]] += szp*fe(szp+szq, mo-2)%mo) %= mo;
(sm[dsu[q]] += szq*fe(szp+szq, mo-2)%mo) %= mo;
mrg(p, q);
}
for (i=1; i<=n; i++) printf("%lld ", (ans[i]+sm[dsu[i]])%mo);
printf("\n");
}