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
# Zadanie: Walizki
# Autor: Tomasz Kwiatkowski

import math

def ans(n, G, Gp):
    cnt = [0] * (n + 1)
    xd = [1] * (n + 1)
    res = max(1, len(G[1]))
    cnt[1] = res
    for i in range(2, n + 1):
        if (len(G[i]) == 0):
            continue
        c = 0
        for u in Gp[i]:
            if (cnt[u] > 0):
                c += res * xd[u] // cnt[u]
        
        m = len(G[i])
        res *= m // math.gcd(m, c)
        if (c > 0):
            cnt[i] = res
            xd[i] = c // math.gcd(m, c)
        
    return res


def solve():
    n = int(input())
    G = [[] for i in range(n + 1)]
    Gp = [[] for i in range(n + 1)]
    for v in range(1, n + 1):
        G[v] = list(map(int, input().split()[1:]))
        for u in G[v]:
            Gp[u].append(v)
    
    print(ans(n, G, Gp))

solve()