'''[]
txt = open('bftest.txt', 'r')
code = [''.join([i.strip() for i in open('bftest.txt', 'r').readlines()])]
txt.close()
'''
def bracketLen(code):
for length in range(2, len(code) + 1):
if code[:length].count('[') is code[:length].count(']'):
return length
else:
return None
def calcLetter(stdin, code, memory, pointer, readpoint, stdout):
letter = code[readpoint]
if pointer not in memory:
memory.update({pointer:0})
if letter is '>':
pointer = str(int(pointer) + 1)
readpoint += 1
elif letter is '<':
pointer = str(int(pointer) - 1)
readpoint += 1
elif letter is '+':
memory[pointer] = (memory[pointer] + 1) % 0xff
memory[pointer] %= 256
readpoint += 1
elif letter is '-':
memory[pointer] = (memory[pointer] - 1) % 0xff
readpoint += 1
elif letter is '.':
stdout += chr(memory[pointer])
readpoint += 1
elif letter is ',':
memory[pointer] = stdin.pop(0)
readpoint += 1
elif letter is '[':
if memory[pointer]:
readpoint += 1
else:
readpoint += bracketLen(code[readpoint:])
elif letter is ']':
if memory[pointer]:
readpoint += - bracketLen(code[:readpoint + 1][::-1]) + 1
else:
readpoint += 1
else:
readpoint += 1
return [stdin, code, memory, pointer, readpoint, stdout]
stdin, code, memory, pointer, readpoint, stdout= [
[int(i) % 0xff for i in input().split()],
input(),
{'0' : 0},
'0',
0,
'',
]
while readpoint < len(code):
stdin, code, memory, pointer, readpoint, stdout = calcLetter(stdin, code, memory, pointer, readpoint, stdout)
print(stdout)
JycnW10KdHh0ID0gb3BlbignYmZ0ZXN0LnR4dCcsICdyJykKY29kZSA9IFsnJy5qb2luKFtpLnN0cmlwKCkgZm9yIGkgaW4gb3BlbignYmZ0ZXN0LnR4dCcsICdyJykucmVhZGxpbmVzKCldKV0KdHh0LmNsb3NlKCkKJycnCmRlZiBicmFja2V0TGVuKGNvZGUpOgoJZm9yIGxlbmd0aCBpbiByYW5nZSgyLCBsZW4oY29kZSkgKyAxKToKCQlpZiBjb2RlWzpsZW5ndGhdLmNvdW50KCdbJykgaXMgY29kZVs6bGVuZ3RoXS5jb3VudCgnXScpOgoJCQlyZXR1cm4gbGVuZ3RoCgllbHNlOgoJCXJldHVybiBOb25lCgkJCmRlZiBjYWxjTGV0dGVyKHN0ZGluLCBjb2RlLCBtZW1vcnksIHBvaW50ZXIsIHJlYWRwb2ludCwgc3Rkb3V0KToKCWxldHRlciA9IGNvZGVbcmVhZHBvaW50XQoJaWYgcG9pbnRlciBub3QgaW4gbWVtb3J5OgoJCW1lbW9yeS51cGRhdGUoe3BvaW50ZXI6MH0pCglpZiBsZXR0ZXIgaXMgJz4nOgoJCXBvaW50ZXIgPSBzdHIoaW50KHBvaW50ZXIpICsgMSkKCQlyZWFkcG9pbnQgKz0gMQoJZWxpZiBsZXR0ZXIgaXMgJzwnOgoJCXBvaW50ZXIgPSBzdHIoaW50KHBvaW50ZXIpIC0gMSkKCQlyZWFkcG9pbnQgKz0gMQoJZWxpZiBsZXR0ZXIgaXMgJysnOgoJCW1lbW9yeVtwb2ludGVyXSA9IChtZW1vcnlbcG9pbnRlcl0gKyAxKSAlIDB4ZmYKCQltZW1vcnlbcG9pbnRlcl0gJT0gMjU2CgkJcmVhZHBvaW50ICs9IDEKCWVsaWYgbGV0dGVyIGlzICctJzoKCQltZW1vcnlbcG9pbnRlcl0gPSAobWVtb3J5W3BvaW50ZXJdIC0gMSkgJSAweGZmCgkJcmVhZHBvaW50ICs9IDEKCWVsaWYgbGV0dGVyIGlzICcuJzoKCQlzdGRvdXQgKz0gY2hyKG1lbW9yeVtwb2ludGVyXSkKCQlyZWFkcG9pbnQgKz0gMQoJZWxpZiBsZXR0ZXIgaXMgJywnOgoJCW1lbW9yeVtwb2ludGVyXSA9IHN0ZGluLnBvcCgwKQoJCXJlYWRwb2ludCArPSAxCgllbGlmIGxldHRlciBpcyAnWyc6CgkJaWYgbWVtb3J5W3BvaW50ZXJdOgoJCQlyZWFkcG9pbnQgKz0gMQoJCWVsc2U6CgkJCXJlYWRwb2ludCArPSBicmFja2V0TGVuKGNvZGVbcmVhZHBvaW50Ol0pCgllbGlmIGxldHRlciBpcyAnXSc6CgkJaWYgbWVtb3J5W3BvaW50ZXJdOgoJCQlyZWFkcG9pbnQgKz0gLSBicmFja2V0TGVuKGNvZGVbOnJlYWRwb2ludCArIDFdWzo6LTFdKSArIDEKCQllbHNlOgoJCQlyZWFkcG9pbnQgKz0gMQoJZWxzZToKCQlyZWFkcG9pbnQgKz0gMQoJcmV0dXJuIFtzdGRpbiwgY29kZSwgbWVtb3J5LCBwb2ludGVyLCByZWFkcG9pbnQsIHN0ZG91dF0KCnN0ZGluLCBjb2RlLCBtZW1vcnksIHBvaW50ZXIsIHJlYWRwb2ludCwgc3Rkb3V0PSBbCglbaW50KGkpICUgMHhmZiBmb3IgaSBpbiBpbnB1dCgpLnNwbGl0KCldLAoJaW5wdXQoKSwKCXsnMCcgOiAwfSwKCScwJywKCTAsCgknJywKXQp3aGlsZSByZWFkcG9pbnQgPCBsZW4oY29kZSk6CglzdGRpbiwgY29kZSwgbWVtb3J5LCBwb2ludGVyLCByZWFkcG9pbnQsIHN0ZG91dCA9IGNhbGNMZXR0ZXIoc3RkaW4sIGNvZGUsIG1lbW9yeSwgcG9pbnRlciwgcmVhZHBvaW50LCBzdGRvdXQpCnByaW50KHN0ZG91dCk=