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
def merge(a, b):
    res = []
    if len(a) >= len(b):
        for i in range(len(b)):
            if a[i] != b[i]:
                res.append("?")
            else:
                res.append(a[i])
    else:
        return merge(b, a)
    
    res = res + list(a[len(b):])
    return "".join(res)
        

def mod(input, progress): 
    if not input: return ""
    current, rest = input[0], input[1:]

    cmd = current.split(" ")[0]

    if cmd == "+":
        arg1, arg2 = int(current.split(" ")[1]) - 1, int(current.split(" ")[2]) - 1
        res1, res2 = [], []
        if progress[arg1] == 0:
            progress1 = progress.copy()
            progress1[arg1] = 1
            res1 = mod(rest, progress1)
        if progress[arg2] == 0:
            progress2 = progress.copy()
            progress2[arg2] = 1
            res2 = mod(rest, progress2)

        return merge(res1, res2)
    
    if cmd == "-":
        arg1 = int(current.split(" ")[1]) - 1
        progress1 = progress
        progress1[arg1] = 0
        return mod(rest, progress1)

    if cmd == "?":
        arg1 = int(current.split(" ")[1]) - 1
        return str(progress[arg1]) + mod(rest, progress)
    
    return ""

line = input()
n = int(line.split(" ")[0])
q = int(line.split(" ")[1])
cmds = []

for i in range(q):
    cmds.append(input())

print(mod(cmds, [0] * n))