constint MXN = 100005; constint DVS = 998244353; int N, deg[MXN], eid[MXN], E, spid, mxd, diff; vector<int> to[MXN];
voiddfs(int p, int f, int d){ mxd = max(mxd, d); if (f != -1) diff = (diff + d - 1) % DVS; for (int q : to[p]) { if (q == f) continue; dfs(q, p, d + 1); } } intinv(int x){ intp(DVS - 2), a(1); while (p) { if (p & 1) a = a * 1LL * x % DVS; x = x * 1LL * x % DVS; p >>= 1; } return a; }
intmain(){ cin >> N; for (inti(1), x(0), y(0); i != N; ++i) { cin >> x >> y; --x, --y; ++deg[x], ++deg[y]; eid[x] = eid[y] = i; to[x].push_back(y); to[y].push_back(x); } cin >> E; for (inti(0); i != N; ++i) { if (deg[i] != 1) continue; spid = eid[i]; dfs(i, -1, 0); diff = (diff + mxd - 1) % DVS; break; } diff = diff * 1LL * inv(N) % DVS; E = (E - diff + DVS) % DVS; if (E < N) E += DVS; for (inti(1); i != N; ++i) { if (i == spid) cout << E << endl; else cout << '1' << endl; } return0; }