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
import sys

"""def get_set(n: int, i: int) -> list:
    if i == 0:
        return [True] * n
    result = [False] * n
    for j in range(n, i, i):
        result[j] = True
    return result
"""

def get_sets(n: int) -> list:
    sets = [[] for _ in range(n)]
    i = 1
    while i <= n:
        j = 0
        while j < len(sets):
            if i%(j+1) == 0:
                sets[j].append(i)
            j += 1
        i += 1
    return sets

def fetch_data(raw_data: str) -> list:
    data = [[int(i) for i in d.split()] for d in raw_data.split("\n") if d]  
    return data
    
# n m q
# m wierszy operacji
# q wierszy pytań
def solve(raw_data: str) -> list:
    data = fetch_data(raw_data)
    n, m, q = data[0]
    sets = get_sets(n)
    operations = data[1:m+1]
    for operation in operations:
        if operation[0] == 1:
            sets.append(add_sets(sets[operation[1]-1], sets[operation[2]-1]))
        elif operation[0] == 2:
            sets.append(intersect_sets(sets[operation[1]-1], sets[operation[2]-1]))
        elif operation[0] == 3:
            sets.append(neg_set(sets[operation[1]-1], n))
    questions = data[m+1:]
    for question in questions:
        if question[1] in sets[question[0]-1]:
            print("TAK")
            continue
        print("NIE")

def add_sets(set1: list, set2: list) -> list:
    return list(set(set1 + set2))

def intersect_sets(set1: list, set2: list) -> list:
    return list(set(set1) & set(set2))

def neg_set(_set: list, n: int) -> list:
    return list(set(a for a in range(n)) - set(_set))


if __name__ == "__main__":
    raw_data = sys.argv[1]
    solve(raw_data)