#include #pragma GCC optimize("O2") #pragma GCC optimize("unroll-loops") using namespace std; using ll = long long; #define rep(i, n) for (ll i=0; i<(n); i++) #define all(a) a.begin(), a.end() template bool chmin(T &a, T b) {if (a > b){a = b; return true;} return false;} template bool chmax(T &a, T b) {if (a < b){a = b; return true;} return false;} template ll sz(const Container &a) {return a.size();} const ll INFL = (1LL << 61); struct Fastio {Fastio() {ios::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr);}}; Fastio fastio; int main() { ll n; cin >> n; vector deg(n, 0); vector edges(n-1, vector()); rep(i, n) { cin >> deg[i]; rep(_, deg[i]) { ll eid; cin >> eid; --eid; edges[eid].emplace_back(i); } } vector g(n, vector()); rep(i, n-1) { ll u = edges[i][0]; ll v = edges[i][1]; g[u].emplace_back(v); g[v].emplace_back(u); } vector ans(n-1, 0); for (ll k=1; k<=n-1; k++) { if (k > 150) break; auto dfs = [&] (auto self, ll u, ll par) -> pair { ll dpn = 0; ll total = 0; for (auto v : g[u]) { if (v == par) continue; auto [dpi, tn] = self(self, v, u); total += tn; dpn += dpi; } if ((deg[u] - 1 - total) >= k) return {dpn+1, 0}; if ((deg[u] - total) >= k) return {dpn+1, 1}; return {dpn, 0}; }; auto [dp, _] = dfs(dfs, 0, -1); ans[k-1] = dp; } rep(i, sz(ans)) cout << ans[i] << " \n"[i == sz(ans) - 1]; }