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
def gcd(x,y):
    if x==0:
        return y
    return gcd(y%x,x)

n = int(input())
e = [[]]*n
ein = []
for i in range(n):
    ein.append([])
l = [0]*n
for i in range(n):
    tmp = input()
    l[i] = int(tmp.split(' ',1)[0])
    if l[i]>0:
        e[i] = [int(j)-1 for j in tmp.split(' ',1)[1].split(' ')]
    for v in e[i]:
        ein[v].append(i)

if l[0]==0:
    print(1)
else:
    mv = [0]*n
    ansb = [0]*n
    ans = l[0]
    mv[0] = 1
    ansb[0] = 1
    for i in range(1,n):
        if l[i]==0:
            continue
        ansb[i] = ans
        for v in ein[i]:
            mv[i]+=mv[v]*ans//(l[v]*ansb[v])
        ans *= l[i]//gcd(mv[i],l[i])

    print(ans)