1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#include<iostream>
#include<vector>

#define REP(i,n) for(int i=0;i<(n);++i)
#define FOR(i,a,b) for(int i=(a);i<=(b);++i)
#define FORD(i,a,b) for(int i=(a);i>=(b);--i)

using namespace std;

const int MAX_K = 500000;

vector<int> A[MAX_K], B[MAX_K]; 

int res, n, k, a;

int main(void) {
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	
	cin >> k >> n;
	
	A[0].clear(); B[0].clear();
	REP(j, n) { A[0].push_back(0); B[0].push_back(0); }
	
	FOR(i, 1, k-1) {
		A[i].clear(); B[i].clear();
		cin >> n;
		REP(j, n) {
			cin >> a;
			A[i].push_back(a);
			B[i].push_back(0);
		}
	}

	int res = -1;
	
	FORD(i, k-1, 0) {
		n = B[i].size();
		a = 0;
		REP(j, n) {
			if (B[i][j] == 0) {
				B[i][j] = 1;
			}
			if (A[i][j] != 0) {
				B[i-1][A[i][j]-1] += B[i][j];
			}
			a += B[i][j];
		}
		if (a > res) {
			res = a;
		}
	}
		
	cout << res << endl;

	return 0;
}