N=int(eval(input()))



S=[[-1]*N for _ in range(N)]

for i in range(N):

  A=int(eval(input()))

  for _ in range(A):

    x, y=list(map(int, input().split()))

    S[i][x-1]=y

ans=0   

for s in range(2**N):

  ok=True

  for i in range(N):

    #正直者について見ていく

    if (s>>i&1)==1:

      for j in range(N):

        #それぞれ正直者の証言が矛盾ないか

        if S[i][j]!=-1 and (s>>j&1)!=S[i][j]:

          ok=False

  if ok:

    ans=max(ans, bin(s).count("1"))

    

print(ans)

N=int(eval(input()))



A=[[-1]*N for _ in range(N)]

for i in range(N):

  a=int(eval(input()))

  for j in range(a):

    x,y=list(map(int, input().split()))

    A[i][x-1]=y

#正直者が正直者に不親切と言われていない

#→正直ものが不親切を正直者と言っていないか

ans=0

for i in range(2**N):

  ok=True

  for j in range(N):

    if (i>>j&1)==1:

      for k in range(N):

        if A[j][k]!=-1 and (i>>k&1)!=A[j][k]:

          ok=False

  if ok:

    ans=max(ans, bin(i).count("1"))

  

print(ans)
N = int(eval(input()))
S = [[-1] * N for _ in range(N)]
for i in range(N):
    A = int(eval(input()))
    for _ in range(A):
        x, y = list(map(int, input().split()))
        S[i][x - 1] = y
ans = 0
for s in range(2**N):
    ok = True
    for i in range(N):
        # 正直者について見ていく
        if (s >> i & 1) == 1:
            for j in range(N):
                # それぞれ正直者の証言が矛盾ないか
                if S[i][j] != -1 and (s >> j & 1) != S[i][j]:
                    ok = False
    if ok:
        ans = max(ans, bin(s).count("1"))
print(ans)

N = int(eval(input()))
A = [[-1] * N for _ in range(N)]
for i in range(N):
    a = int(eval(input()))
    for j in range(a):
        x, y = list(map(int, input().split()))
        A[i][x - 1] = y
# 正直者が正直者に不親切と言われていない
# →正直ものが不親切を正直者と言っていないか
ans = 0
for i in range(2**N):
    ok = True
    for j in range(N):
        if (i >> j & 1) == 1:
            for k in range(N):
                if A[j][k] != -1 and (i >> k & 1) != A[j][k]:
                    ok = False
    if ok:
        ans = max(ans, bin(i).count("1"))
print(ans)

-S = [[-1] * N for _ in range(N)] +A = [[-1] * N for _ in range(N)] -    A = int(eval(input())) -    for _ in range(A): +    a = int(eval(input())) +    for j in range(a): -        S[i][x - 1] = y +        A[i][x - 1] = y +# 正直者が正直者に不親切と言われていない +# →正直ものが不親切を正直者と言っていないか -for s in range(2**N): +for i in range(2**N): -    for i in range(N): -        # 正直者について見ていく -        if (s >> i & 1) == 1: -            for j in range(N): -                # それぞれ正直者の証言が矛盾ないか -                if S[i][j] != -1 and (s >> j & 1) != S[i][j]: +    for j in range(N): +        if (i >> j & 1) == 1: +            for k in range(N): +                if A[j][k] != -1 and (i >> k & 1) != A[j][k]: -        ans = max(ans, bin(s).count("1")) +        ans = max(ans, bin(i).count("1"))