var input = '++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>.';
var char;
var charPtr = 0;
var arr = [];
var ptr = 0;
var loopPtrs = [];
while ((char = input[charPtr]) !== undefined) {
if (char === '+') arr[ptr] = arr[ptr] ? arr[ptr] + 1 : 1;
else if (char === '-') arr[ptr] = arr[ptr] ? arr[ptr] - 1 : - 1;
else if (char === '>') ptr++;
else if (char === '<') ptr--;
else if (char === '[') loopPtrs.push(charPtr);
else if (char === ']') {
if (arr[ptr]) charPtr = loopPtrs[loopPtrs.length - 1];
else loopPtrs.pop();
} else if (char === '.') print(String.fromCharCode(arr[ptr] ? arr[ptr] : 0));
charPtr++;
}
dmFyIGlucHV0ID0gJysrKysrKysrKytbPisrKysrKys+KysrKysrKysrKz4rKys+Kzw8PDwtXT4rKy4+Ky4rKysrKysrLi4rKysuPisrLjw8KysrKysrKysrKysrKysrLj4uKysrLi0tLS0tLS4tLS0tLS0tLS4+Ky4+Lic7CnZhciBjaGFyOwp2YXIgY2hhclB0ciA9IDA7CnZhciBhcnIgPSBbXTsKdmFyIHB0ciA9IDA7CnZhciBsb29wUHRycyA9IFtdOwp3aGlsZSAoKGNoYXIgPSBpbnB1dFtjaGFyUHRyXSkgIT09IHVuZGVmaW5lZCkgewogIGlmIChjaGFyID09PSAnKycpIGFycltwdHJdID0gYXJyW3B0cl0gPyBhcnJbcHRyXSArIDEgOiAxOwogIGVsc2UgaWYgKGNoYXIgPT09ICctJykgYXJyW3B0cl0gPSBhcnJbcHRyXSA/IGFycltwdHJdIC0gMSA6IC0gMTsKICBlbHNlIGlmIChjaGFyID09PSAnPicpIHB0cisrOwogIGVsc2UgaWYgKGNoYXIgPT09ICc8JykgcHRyLS07CiAgZWxzZSBpZiAoY2hhciA9PT0gJ1snKSBsb29wUHRycy5wdXNoKGNoYXJQdHIpOwogIGVsc2UgaWYgKGNoYXIgPT09ICddJykgewoJCWlmIChhcnJbcHRyXSkgY2hhclB0ciA9IGxvb3BQdHJzW2xvb3BQdHJzLmxlbmd0aCAtIDFdOwoJCWVsc2UgbG9vcFB0cnMucG9wKCk7CiAgfSBlbHNlIGlmIChjaGFyID09PSAnLicpIHByaW50KFN0cmluZy5mcm9tQ2hhckNvZGUoYXJyW3B0cl0gPyBhcnJbcHRyXSA6IDApKTsKICBjaGFyUHRyKys7Cn0=