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
def modernization_bajtocji():
    n, q = map(int, input().split())
    has_computer = set() 
    might_have_computer = {} 
    result = []

    for _ in range(q):
        event = input().split()
        event_type = event[0]

        if event_type == '+':
            a, b = map(int, event[1:])
            if a == b or a in has_computer or b in has_computer:
                has_computer.add(a if a == b or b in has_computer else b)
            else:
                might_have_computer.setdefault(a, set()).add(b)
                might_have_computer.setdefault(b, set()).add(a)

        elif event_type == '-':
            c = int(event[1])
            has_computer.discard(c) 
            for other in list(might_have_computer.keys()):
                might_have_computer[other].discard(c)
                if len(might_have_computer[other]) == 1:
                    single_candidate = might_have_computer[other].pop()
                    has_computer.add(single_candidate)
                    del might_have_computer[other]

        elif event_type == '?':
            d = int(event[1])
            if d in has_computer:
                result.append('1')
            elif d in might_have_computer and len(might_have_computer[d]) == 1:
                result.append('?')
            else:
                result.append('0')

    return ''.join(result)

print(modernization_bajtocji())