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
58
59
60
61
62
63
64
65
66
67
68
def podział_na_zbiory(n):
    zbiory = [[] for _ in range(n+1) ]
    index = 1
    for zbiór in zbiory[1:]:
        mul = 1
        while index*mul <= n:
            zbiór.append(index*mul)
            mul += 1
        index += 1
    return zbiory[:]

def suma(x:[], y:[],n):
    m = x.copy()
    for item in y:
        if item not in m:
            m.append(item)
    m.sort()
    return m
def iloczyn(x:[], y:[],n):
    m = []
    for number in range(n):
        if number in x and number in y:
            m.append(number)
    return m

def negacja(x:[],y:[] ,n):
    m = []
    for number in range(1,n):
        if number not in x:
            m.append(number)

    return m

operacje = {
    '1':suma,
    '2':iloczyn,
    '3':negacja
}
def sprawdz(zbior, liczba):
    if liczba in zbior:
         print('TAK')
    else:
        print('NIE')


def odczytaj():
    first_line = input().split()
    N = int(first_line[0])
    M = int(first_line[1])
    Q = int(first_line[2])
    zbiory = podział_na_zbiory(N)
    for m in range(M):
        linia = input().split()
        try:
            operation = operacje[linia[0]]
            x = int(linia[1])
            y = int(linia[2])
        except Exception:
            operation = operacje[linia[0]]
            x = int(linia[1])
            y = 0
        zbiory.append(operation(x=zbiory[x],y=zbiory[y],n=N))
    for q in range(Q):
        linia = input().split()
        sprawdz(zbiory[int(linia[0])],int(linia[1]))
    #return zbiory[1:]

odczytaj()