This project translates a reduced set of x86 assembly code into brainfuck-code.
The language contains (infinite) registers: $0, $1, ... Every value is treated as unsigned (comparisons, memory lookups, ..) The translated brainfuck-code is optimized for unsigned 8-bit-cells with rotating increment/decrement (so 0-1 = 255, 255+1 = 0), but should work for other cell-sizes as well.
A complete overview of every available instruction:
* mov $0, $1 //$0 = $1
* mov $0, 0
* mov $0, [0] //memory lookup at position 0
* mov $0, [$1] //memory lookup at position $0
* mov [0], 0
* mov [0], $0
* mov [$0], 0
* mov [$0], $0
* add $0, 0 //$0 = S0+0
* add $0, $1 //$0 = S0+$1
* sub $0, 0
* sub $0, $1
* mul $0, $1, $2 //$0 = $1*$2
* div $0, $1, $2, $3 //$0 = $2 / $3, $1 = $2 % $3
* out 0 //print character '\0'
* out $0 //print character in $0
* in $0 //read character to $0
* push 0
* push $0
* pop $0
* labelName: //'jmp labelName' will jump to that position
* jmp labelName
* jz $0, labelName //jump to labelName if $0 is 0
* jnz $0, labelName
* je $0, $1, labelName //jump to labelName if $0 == $1
* jne $0, $1, labelName
* jg $0, $1, labelName //jump to labelName if $0 > $1 (unsigned comparison)
* jge $0, $1, labelName //jump to labelName if $0 >= $1 (unsigned comparison)
* jl $0, $1, labelName //jump to labelName if $0 < $1 (unsigned comparison)
* jle $0, $1, labelName //jump to labelName if $0 <= $1 (unsigned comparison)
* call labelName //call function 'labelName'
* ret //return from current function
* stacksize 0 //defines the stack-size, if you use the stack above that size, it will overwrite the memory
* global 0 0,1,2 //initialize the memory at position 0 with the given numbers
* global 0 "abc\n\0" //initialize the memory at position 0 with the given string
If you are used to java-code, just take the sourcecode in src/ and use it however you want. (build a jar as example) Otherwise you can use the minimal build-bash-script in the directory src.
- Make sure you have a java jdk installed (version 8 or higher should be fine)
- Navigate to the main-directory and execute the build-bash-script
- It will create a build-directory in the main-directory containing the compiled java-files. You can run them with:
java -cp build/ Main samples/fibonacci.asm -e
Sample output:
Hello world.
Asm-code:
global 0 "Hello world.\n\0"
mov $0, 0
print_loop:
mov $1, [$0]
jz $1, break_print
out $1
add $0, 1
jmp print_loop
break_print:
Brainfuck-code:
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>+++++++++[-<++++++++>]>>>++++++++++[-<++++++++++>]<+>>>>++++++++++[-<++++++++++>]<++++++++>>>>++++++++++[-<++++++++++>]<++++++++>>>>++++++++++[-<+++++++++++>]<+>>>>+++++[-<++++++>]<++>>>>++++++++++[-<+++++++++++>]<+++++++++>>>>++++++++++[-<+++++++++++>]<+>>>>++++++++++[-<+++++++++++>]<++++>>>>++++++++++[-<++++++++++>]<++++++++>>>>++++++++++[-<++++++++++>]>>>++++++[-<+++++++>]<++++>>>++++++++++<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<+[[-]>[-<+>]<[->>>+<+<<]>>>[-<<<+>>>]+<[[-]>-<]>[-<<<<<[-]>>>+<+++++>>>]<<<-[->>>+<+<<]>>>[-<<<+>>>]+<[[-]>-<]>[-<<<<<++++++++++++++++>[-]<[->>>>>>>>>>>>+<<<<<<<<<<<<]>>>>>>>>>>>>+[-[->>+>+<<<]>>>]<<[-<<[<<<[>>>[-]<<<<<<]]>>>[-<<+>>]<<<<<<<+>>>>>+[-[->>+>+<<<]>>>]<<]<<[<<<[>>>[-]<<<<<<]]>>>[-<<+>>]<<<<<<<[->+<<<<<<<+>>>>>>]>[-<+>]>>>>+[-[->>+>+<<<]>>>]<<[-]<<[<<<[>>>[-]<<<<<<]]>>>[-<<+>>]<<<<<<<[->>>>>+[-[->>+>+<<<]>>>]<<+<<[<<<[>>>[-]<<<<<<]]>>>[-<<+>>]<<<<<<<]>>>>>[-<<<<<<<<<<<<+>>>>>>>>>>>>]<<<<<<<<<<<<---------------->[->>>>>>>+<+<<<<<<]>>>>>>>[-<<<<<<<+>>>>>>>]+<[<<<<++>>>>[-]>-<]>[<<<<<+++>>>>>-]<<<<<<+++++>>>]<<<-[->>>+<+<<]>>>[-<<<+>>>]+<[[-]>-<]>[-<<<<.>>>>>>+[-<<<<<<<+>>>>>>>]<<<<+<+++++>>>]<<<-[->>>+<+<<]>>>[-<<<+>>>]+<[[-]>-<]>[-<<+++<[-]>>>]<<<]
Sample output:
Fibonacci number generator
==========================
Please enter 2 digits: 12
-> Number 0 is: 1
-> Number 1 is: 1
-> Number 2 is: 2
-> Number 3 is: 3
-> Number 4 is: 5
-> Number 5 is: 8
-> Number 6 is: 13
-> Number 7 is: 21
-> Number 8 is: 34
-> Number 9 is: 55
-> Number 10 is: 89
-> Number 11 is: 144
Asm-code:
stacksize 16
global 2 " -> Number %u is: %u\n\0"
global 25 "\n\n\0"
global 28 "Fibonacci number generator\n==========================\n\nPlease enter 2 digits: \0"
jmp __start
//$0 is offset of string (has to end with \0) (will be changed)
//$1 is offset of arguments (will be changed)
//$2-$8 reserved (will be written)
//%u is the only replacement possibility (% can be escaped with \%)
printf:
printf_loop:
mov $3, [$0]
jz $3, printf_end
add $0, 1
mov $4, [$0]
mov $2, 92
jne $3, $2, printf_skip_escape // '\'
je $4, $2, printf_escape // '\'
mov $2, 37
je $4, $2, printf_escape // '%'
jmp printf_error
printf_escape:
mov $3, $4
add $0, 1
printf_skip_escape:
mov $2, 37
jne $3, $2, printf_replace_escape // '%'
mov $2, 117 // 'u'
jne $4, $2, printf_error
add $0, 1
mov $7, $0
mov $8, $1
mov $0, [$1]
add $8, 1
call print_decimal
mov $1, $8
mov $0, $7
jmp printf_loop
printf_replace_escape:
out $3
jmp printf_loop
jmp printf_end
printf_error:
out 73
out 78
out 86
printf_end:
ret
//$0 is the decimal
//$1-$6 will be changed
print_decimal:
mov $5, $0
mov $6, 0
print_decimal_loop0:
mov $3, 10
div $0, $1, $5, $3
add $1, 48
push $1
add $6, 1
mov $5, $0
jnz $5, print_decimal_loop0
print_decimal_loop1:
jz $6, print_decimal_end
sub $6, 1
pop $5
out $5
jmp print_decimal_loop1
print_decimal_end:
ret
__start:
mov $0, 28
call printf
mov $9, 1
mov $10, 0
mov $12, 0
in $14
in $15
sub $14,48
sub $15,48
mov $16, 10
mul $13, $14, $16
add $13, $15
mov $0, 25
call printf
main_loop:
mov $11, $9
add $11, $10
mov $9, $10
mov $10, $11
mov $0, 2
mov $1, 0
mov [0], $12
mov [1], $11
call printf
add $12, 1
jl $12, $13, main_loop
Brainfuck-code:
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>+++++[-<++++++>]<++>>>>+++++[-<++++++>]<++>>>>++++++[-<+++++++>]<+++>>>>+++++++[-<++++++++>]<++++++>>>>+++++[-<++++++>]<++>>>>++++++++[-<+++++++++>]<++++++>>>>++++++++++[-<+++++++++++>]<+++++++>>>>++++++++++[-<++++++++++>]<+++++++++>>>>+++++++++[-<++++++++++>]<++++++++>>>>++++++++++[-<++++++++++>]<+>>>>++++++++++[-<+++++++++++>]<++++>>>>+++++[-<++++++>]<++>>>>++++++[-<++++++>]<+>>>>++++++++++[-<+++++++++++>]<+++++++>>>>+++++[-<++++++>]<++>>>>++++++++++[-<++++++++++>]<+++++>>>>++++++++++[-<+++++++++++>]<+++++>>>>+++++++[-<++++++++>]<++>>>>+++++[-<++++++>]<++>>>>++++++[-<++++++>]<+>>>>++++++++++[-<+++++++++++>]<+++++++>>>++++++++++>>>>>>++++++++++>>>++++++++++>>>>>>>++++++++[-<++++++++>]<++++++>>>>++++++++++[-<++++++++++>]<+++++>>>>+++++++++[-<++++++++++>]<++++++++>>>>++++++++++[-<+++++++++++>]<+>>>>+++++++++++[-<++++++++++>]>>>+++++++++[-<++++++++++>]<+++++++>>>>+++++++++[-<++++++++++>]<+++++++++>>>>+++++++++[-<++++++++++>]<+++++++++>>>>++++++++++[-<++++++++++>]<+++++>>>>+++++[-<++++++>]<++>>>>+++++++++++[-<++++++++++>]>>>++++++++++[-<+++++++++++>]<+++++++>>>>++++++++++[-<++++++++++>]<+++++++++>>>>+++++++++[-<++++++++++>]<++++++++>>>>++++++++++[-<++++++++++>]<+>>>>++++++++++[-<+++++++++++>]<++++>>>>+++++[-<++++++>]<++>>>>++++++++++[-<++++++++++>]<+++>>>>++++++++++[-<++++++++++>]<+>>>>+++++++++++[-<++++++++++>]>>>++++++++++[-<++++++++++>]<+>>>>++++++++++[-<+++++++++++>]<++++>>>>+++++++++[-<++++++++++>]<+++++++>>>>++++++++++[-<+++++++++++>]<++++++>>>>++++++++++[-<+++++++++++>]<+>>>>++++++++++[-<+++++++++++>]<++++>>>++++++++++>>>>+++++++[-<++++++++>]<+++++>>>>+++++++[-<++++++++>]<+++++>>>>+++++++[-<++++++++>]<+++++>>>>+++++++[-<++++++++>]<+++++>>>>+++++++[-<++++++++>]<+++++>>>>+++++++[-<++++++++>]<+++++>>>>+++++++[-<++++++++>]<+++++>>>>+++++++[-<++++++++>]<+++++>>>>+++++++[-<++++++++>]<+++++>>>>+++++++[-<++++++++>]<+++++>>>>+++++++[-<++++++++>]<+++++>>>>+++++++[-<++++++++>]<+++++>>>>+++++++[-<++++++++>]<+++++>>>>+++++++[-<++++++++>]<+++++>>>>+++++++[-<++++++++>]<+++++>>>>+++++++[-<++++++++>]<+++++>>>>+++++++[-<++++++++>]<+++++>>>>+++++++[-<++++++++>]<+++++>>>>+++++++[-<++++++++>]<+++++>>>>+++++++[-<++++++++>]<+++++>>>>+++++++[-<++++++++>]<+++++>>>>+++++++[-<++++++++>]<+++++>>>>+++++++[-<++++++++>]<+++++>>>>+++++++[-<++++++++>]<+++++>>>>+++++++[-<++++++++>]<+++++>>>>+++++++[-<++++++++>]<+++++>>>++++++++++>>>++++++++++>>>>++++++++[-<+++++++++>]<++++++++>>>>++++++++++[-<++++++++++>]<++++++++>>>>++++++++++[-<++++++++++>]<+>>>>+++++++++[-<++++++++++>]<+++++++>>>>++++++++++[-<+++++++++++>]<+++++>>>>++++++++++[-<++++++++++>]<+>>>>+++++[-<++++++>]<++>>>>++++++++++[-<++++++++++>]<+>>>>+++++++++++[-<++++++++++>]>>>++++++++++[-<+++++++++++>]<++++++>>>>++++++++++[-<++++++++++>]<+>>>>++++++++++[-<+++++++++++>]<++++>>>>+++++[-<++++++>]<++>>>>+++++++[-<+++++++>]<+>>>>+++++[-<++++++>]<++>>>>++++++++++[-<++++++++++>]>>>++++++++++[-<++++++++++>]<+++++>>>>++++++++++[-<++++++++++>]<+++>>>>++++++++++[-<++++++++++>]<+++++>>>>++++++++++[-<+++++++++++>]<++++++>>>>++++++++++[-<+++++++++++>]<+++++>>>>+++++++[-<++++++++>]<++>>>>+++++[-<++++++>]<++<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<+[[-]>[-<+>]<[->>>+<+<<]>>>[-<<<+>>>]+<[[-]>-<]>[-<<++++++++++++++++++++++++++++<++++++++++++++++++++++++++++++++++>>>]<<<-[->>>+<+<<]>>>[-<<<+>>>]+<[[-]>-<]>[-<<<<<<<<<<<<<<<<<<<<<++++++++++++++++<[-]>[->>>>>>>>>>>>>>>>>>>>>>>>>>>>+<<<<<<<<<<<<<<<<<<<<<<<<<<<<]>>>>>>>>>>>>>>>>>>>>>>>>>>>>+[-[->>+>+<<<]>>>]<<[-<<[<<<[>>>[-]<<<<<<]]>>>[-<<+>>]<<<<<<<+>>>>>+[-[->>+>+<<<]>>>]<<]<<[<<<[>>>[-]<<<<<<]]>>>[-<<+>>]<<<<<<<[->+<<<<<<<<<<<<<<<<<<<<<<<<<+>>>>>>>>>>>>>>>>>>>>>>>>]>[-<+>]>>>>+[-[->>+>+<<<]>>>]<<[-]<<[<<<[>>>[-]<<<<<<]]>>>[-<<+>>]<<<<<<<[->>>>>+[-[->>+>+<<<]>>>]<<+<<[<<<[>>>[-]<<<<<<]]>>>[-<<+>>]<<<<<<<]>>>>>[-<<<<<<<<<<<<<<<<<<<<<<<<<<<<+>>>>>>>>>>>>>>>>>>>>>>>>>>>>]<<<<<<<<<<<<<<<<<<<<<<<<<<<<----------------<[->>>>>>>>>>>>>>>>>>>>>>>>>+<+<<<<<<<<<<<<<<<<<<<<<<<<]>>>>>>>>>>>>>>>>>>>>>>>>>[-<<<<<<<<<<<<<<<<<<<<<<<<<+>>>>>>>>>>>>>>>>>>>>>>>>>]+<[<<<<++>>>>[-]>-<]>[<<<<<++++++++++++++>>>>>-]<<<<<<++++++++++++++++++++++++++++++++++>>>]<<<-[->>>+<+<<]>>>[-<<<+>>>]+<[[-]>-<]>[->>+[-<<<<<<<<<<<<<<<<<<<<<<<+>>>>>>>>>>>>>>>>>>>>>>>]<<<<<<<<<<<<<<<<<<<<<<<++++++++++++++++>[-]<[->>>>>>>>>>>>>>>>>>>>>>>>>>>>+<<<<<<<<<<<<<<<<<<<<<<<<<<<<]>>>>>>>>>>>>>>>>>>>>>>>>>>>>+[-[->>+>+<<<]>>>]<<[-<<[<<<[>>>[-]<<<<<<]]>>>[-<<+>>]<<<<<<<+>>>>>+[-[->>+>+<<<]>>>]<<]<<[<<<[>>>[-]<<<<<<]]>>>[-<<+>>]<<<<<<<[->+<<<<<<<<<<<<<<<<<<<<<<<+>>>>>>>>>>>>>>>>>>>>>>]>[-<+>]>>>>+[-[->>+>+<<<]>>>]<<[-]<<[<<<[>>>[-]<<<<<<]]>>>[-<<+>>]<<<<<<<[->>>>>+[-[->>+>+<<<]>>>]<<+<<[<<<[>>>[-]<<<<<<]]>>>[-<<+>>]<<<<<<<]>>>>>[-<<<<<<<<<<<<<<<<<<<<<<<<<<<<+>>>>>>>>>>>>>>>>>>>>>>>>>>>>]<<<<<<<<<<<<<<<<<<<<<<<<<<<<---------------->>[-]++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++<<<[->>>>>>>>>>>>>>>>>>>>>>>>>>+<<+<<<<<<<<<<<<<<<<<<<<<<<<]>>>>>>>>>>>>>>>>>>>>>>>>>>[-<<<<<<<<<<<<<<<<<<<<<<<<<<+>>>>>>>>>>>>>>>>>>>>>>>>>>]<<<<<<<<<<<<<<<<<<<<<<<[->>>>>>>>>>>>>>>>>>>>>>>+<+<<<<<<<<<<<<<<<<<<<<<<]>>>>>>>>>>>>>>>>>>>>>>>[-<<<<<<<<<<<<<<<<<<<<<<<+>>>>>>>>>>>>>>>>>>>>>>>]<[-<->]+<[<<<<+++++++>>>>[-]>-<]>[<<<<<+++>>>>>-]<<<<<<++++++++++++++++++++++++++++++++++>>>]<<<-[->>>+<+<<]>>>[-<<<+>>>]+<[[-]>-<]>[-<<<<<<<<<<<<<<<<<<<<[->>>>>>>>>>>>>>>>>>>>>>>>+<<+<<<<<<<<<<<<<<<<<<<<<<]>>>>>>>>>>>>>>>>>>>>>>>>[-<<<<<<<<<<<<<<<<<<<<<<<<+>>>>>>>>>>>>>>>>>>>>>>>>]<<<<<<<<<<<<<<<<<<<<<<<[->>>>>>>>>>>>>>>>>>>>>>>+<+<<<<<<<<<<<<<<<<<<<<<<]>>>>>>>>>>>>>>>>>>>>>>>[-<<<<<<<<<<<<<<<<<<<<<<<+>>>>>>>>>>>>>>>>>>>>>>>]<[-<->]+<[<<<<++++>>>>[-]>-<]>[<<<<<++++++>>>>>-]<<<<<<++++++++++++++++++++++++++++++++++>>>]<<<-[->>>+<+<<]>>>[-<<<+>>>]+<[[-]>-<]>[-<<<<<<<<<<<<<<<<<<<[-]+++++++++++++++++++++++++++++++++++++<[->>>>>>>>>>>>>>>>>>>>>>>>+<<+<<<<<<<<<<<<<<<<<<<<<<]>>>>>>>>>>>>>>>>>>>>>>>>[-<<<<<<<<<<<<<<<<<<<<<<<<+>>>>>>>>>>>>>>>>>>>>>>>>]<<<<<<<<<<<<<<<<<<<<<<<[->>>>>>>>>>>>>>>>>>>>>>>+<+<<<<<<<<<<<<<<<<<<<<<<]>>>>>>>>>>>>>>>>>>>>>>>[-<<<<<<<<<<<<<<<<<<<<<<<+>>>>>>>>>>>>>>>>>>>>>>>]<[-<->]+<[<<<<+++++>>>>[-]>-<]>[<<<<<++++++>>>>>-]<<<<<<++++++++++++++++++++++++++++++++++>>>]<<<-[->>>+<+<<]>>>[-<<<+>>>]+<[[-]>-<]>[-<<+++++++++++++<++++++++++++++++++++++++++++++++++>>>]<<<-[->>>+<+<<]>>>[-<<<+>>>]+<[[-]>-<]>[-<<<<<<<<<<<<<<<<<<<<<<[-]>>[->>>>>>>>>>>>>>>>>>>>>>+<<<<<<<<<<<<<<<<<<<<<<<<+>>]>>>>>>>>>>>>>>>>>>>>>>[-<<<<<<<<<<<<<<<<<<<<<<+>>>>>>>>>>>>>>>>>>>>>>]+[-<<<<<<<<<<<<<<<<<<<<<<<+>>>>>>>>>>>>>>>>>>>>>>>]<<<<+++++++<++++++++++++++++++++++++++++++++++>>>]<<<-[->>>+<+<<]>>>[-<<<+>>>]+<[[-]>-<]>[-<<<<<<<<<<<<<<<<<<<[-]+++++++++++++++++++++++++++++++++++++<<<[->>>>>>>>>>>>>>>>>>>>>>>>>>+<<+<<<<<<<<<<<<<<<<<<<<<<<<]>>>>>>>>>>>>>>>>>>>>>>>>>>[-<<<<<<<<<<<<<<<<<<<<<<<<<<+>>>>>>>>>>>>>>>>>>>>>>>>>>]<<<<<<<<<<<<<<<<<<<<<<<[->>>>>>>>>>>>>>>>>>>>>>>+<+<<<<<<<<<<<<<<<<<<<<<<]>>>>>>>>>>>>>>>>>>>>>>>[-<<<<<<<<<<<<<<<<<<<<<<<+>>>>>>>>>>>>>>>>>>>>>>>]<[-<->]+<[<<<<+++++++++++>>>>[-]>-<]>[<<<<<++++++++>>>>>-]<<<<<<++++++++++++++++++++++++++++++++++>>>]<<<-[->>>+<+<<]>>>[-<<<+>>>]+<[[-]>-<]>[-<<<<<<<<<<<<<<<<<<<[-]+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++<[->>>>>>>>>>>>>>>>>>>>>>>>+<<+<<<<<<<<<<<<<<<<<<<<<<]>>>>>>>>>>>>>>>>>>>>>>>>[-<<<<<<<<<<<<<<<<<<<<<<<<+>>>>>>>>>>>>>>>>>>>>>>>>]<<<<<<<<<<<<<<<<<<<<<<<[->>>>>>>>>>>>>>>>>>>>>>>+<+<<<<<<<<<<<<<<<<<<<<<<]>>>>>>>>>>>>>>>>>>>>>>>[-<<<<<<<<<<<<<<<<<<<<<<<+>>>>>>>>>>>>>>>>>>>>>>>]<[-<->]+<[<<<<+++++++++++++>>>>[-]>-<]>[<<<<<+++++++++>>>>>-]<<<<<<++++++++++++++++++++++++++++++++++>>>]<<<-[->>>+<+<<]>>>[-<<<+>>>]+<[[-]>-<]>[->>+[-<<<<<<<<<<<<<<<<<<<<<<<+>>>>>>>>>>>>>>>>>>>>>>>]<<<<<<<<<<<<<<<<<<<<[-]<<<[->>>>>>>>>>>>>>>>>>>>>>>+<<<<<<<<<<<<<<<<<<<<+<<<]>>>>>>>>>>>>>>>>>>>>>>>[-<<<<<<<<<<<<<<<<<<<<<<<+>>>>>>>>>>>>>>>>>>>>>>>]<<<<<<<<<<<<<<<<<<<[-]>[->>>>>>>>>>>>>>>>>>+<<<<<<<<<<<<<<<<<<<+>]>>>>>>>>>>>>>>>>>>[-<<<<<<<<<<<<<<<<<<+>>>>>>>>>>>>>>>>>>]<<<<<<<<<<<<<<<<<<++++++++++++++++<<<<<[-]>>>>>[->>>>>>>>>>>>>>>>>>>>>>>+<<<<<<<<<<<<<<<<<<<<<<<]>>>>>>>>>>>>>>>>>>>>>>>+[-[->>+>+<<<]>>>]<<[-<<[<<<[>>>[-]<<<<<<]]>>>[-<<+>>]<<<<<<<+>>>>>+[-[->>+>+<<<]>>>]<<]<<[<<<[>>>[-]<<<<<<]]>>>[-<<+>>]<<<<<<<[->+<<<<<<<<<<<<<<<<<<<<<<<<+>>>>>>>>>>>>>>>>>>>>>>>]>[-<+>]>>>>+[-[->>+>+<<<]>>>]<<[-]<<[<<<[>>>[-]<<<<<<]]>>>[-<<+>>]<<<<<<<[->>>>>+[-[->>+>+<<<]>>>]<<+<<[<<<[>>>[-]<<<<<<]]>>>[-<<+>>]<<<<<<<]>>>>>[-<<<<<<<<<<<<<<<<<<<<<<<+>>>>>>>>>>>>>>>>>>>>>>>]<<<<<<<<<<<<<<<<<<<<<<<---------------->>>>>>>>>>>>>>>>>>+[-<<<<<<<<<<<<<<<<<<<+>>>>>>>>>>>>>>>>>>>]<[->>>>>>+<<<<<<]>>>>>>+[-[->>+>+<<<]>>>]<<[-]++++++++++<<[<<<[>>>[-]<<<<<<]]>>>[-<<+>>]<<[-<<<<<<+>>>>>>]<<<<<<+<<<+++++++++++++++<++++++++++++++++++++++++++++++++++>>>]<<<-[->>>+<+<<]>>>[-<<<+>>>]+<[[-]>-<]>[-<<<<<<<<<<<<<<<<[-]<[->>>>>>>>>>>>>>>>>>>+<<<<<<<<<<<<<<<<<<+<]>>>>>>>>>>>>>>>>>>>[-<<<<<<<<<<<<<<<<<<<+>>>>>>>>>>>>>>>>>>>]<<<<<<<<<<<<<<<<<<<<<<<[-]>>>[->>>>>>>>>>>>>>>>>>>>+<<<<<<<<<<<<<<<<<<<<<<<+>>>]>>>>>>>>>>>>>>>>>>>>[-<<<<<<<<<<<<<<<<<<<<+>>>>>>>>>>>>>>>>>>>>]<<<<+<++++++++++++++++++++++++++++++++++>>>]<<<-[->>>+<+<<]>>>[-<<<+>>>]+<[[-]>-<]>[-<<<<<<<<<<<<<<<<<<<<<<.>>>>>>>>>>>>>>>>>>>>+<++++++++++++++++++++++++++++++++++>>>]<<<-[->>>+<+<<]>>>[-<<<+>>>]+<[[-]>-<]>[-<<++++++++++++++<++++++++++++++++++++++++++++++++++>>>]<<<-[->>>+<+<<]>>>[-<<<+>>>]+<[[-]>-<]>[->>+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.[-]++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.[-]++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.[-]<<<<++++++++++++++<++++++++++++++++++++++++++++++++++>>>]<<<-[->>>+<+<<]>>>[-<<<+>>>]+<[[-]>-<]>[->-<<<[-]>>>[->>>>>>+<<<<<<]>>>>>>+[-[->>+>+<<<]>>>]<<[-<<[<<<[>>>[-]<<<<<<]]>>>[-<<+>>]<<<<<<<+>>>>>+[-[->>+>+<<<]>>>]<<]<<[<<<[>>>[-]<<<<<<]]>>>[-<<+>>]<<<<<<<[->+<<<<<+>>>>]>[-<+>]>>>>+[-[->>+>+<<<]>>>]<<[-]<<[<<<[>>>[-]<<<<<<]]>>>[-<<+>>]<<<<<<<[->>>>>+[-[->>+>+<<<]>>>]<<+<<[<<<[>>>[-]<<<<<<]]>>>[-<<+>>]<<<<<<<]>>>>>[-<<<<<<+>>>>>>]<<<<<<<<<<++++++++++++++++++++++++++++++++++>>>]<<<-[->>>+<+<<]>>>[-<<<+>>>]+<[[-]>-<]>[-<<<<<<<<<<<<<<<[-]<<<<<<[->>>>>>>>>>>>>>>>>>>>>>>+<<<<<<<<<<<<<<<<<+<<<<<<]>>>>>>>>>>>>>>>>>>>>>>>[-<<<<<<<<<<<<<<<<<<<<<<<+>>>>>>>>>>>>>>>>>>>>>>>]<<<<<<<<<<<<<<<<[-]>>>>>>>>>>>>++++++++++++++++<++++++++++++++++++++++++++++++++++>>>]<<<-[->>>+<+<<]>>>[-<<<+>>>]+<[[-]>-<]>[-<<<<<<<<<<<<<<<<<<<<<<[-]++++++++++>[-]>>>>>[-]>>>>>>>>>>>[-]<<<<<<<<<<[->>>>>>>>>>>>>>>>>+<<<<<<<+<<<<<<<<<<]>>>>>>>>>>>>>>>>>[-<<<<<<<<<<<<<<<<<+>>>>>>>>>>>>>>>>>]<<<<<<[-]<<<<<<<<<<<<<<<<<<[->>>>>>>>>>>>>>>>>>>>>>>>+<<<<<<+<<<<<<<<<<<<<<<<<<]>>>>>>>>>>>>>>>>>>>>>>>>[-<<<<<<<<<<<<<<<<<<<<<<<<+>>>>>>>>>>>>>>>>>>>>>>>>]<<<<<<<[->>>>>>>>+<+<<<<<<<]>>>>>>>>[-<<<<<<<<+>>>>>>>>]+<[<<<<+++++++++++++++++>>>>[-]>-<]>[<<<<<++++++++++++++++++++++++>>>>>-]<<<<<<++++++++++++++++++++++++++++++++++>>>]<<<-[->>>+<+<<]>>>[-<<<+>>>]+<[[-]>-<]>[-<<<<[->>>>>>>+<+<<<<<<]>>>>>>>[-<<<<<<<+>>>>>>>]+<[<<<<++++++++++++++++++>>>>[-]>-<]>[<<<<<++++++++++++++++++++++++>>>>>-]<<<<<<++++++++++++++++++++++++++++++++++>>>]<<<-[->>>+<+<<]>>>[-<<<+>>>]+<[[-]>-<]>[->>+[-<<<<<<<+>>>>>>>]<<<<+++++++++++++++++++<++++++++++++++++++++++++++++++++++>>>]<<<-[->>>+<+<<]>>>[-<<<+>>>]+<[[-]>-<]>[-<<<<<<<<<<<<<<<<[-]>>>>>>>>>>>>[->>>>>>+<<<<<<<<<<<<<<<<<<+>>>>>>>>>>>>]>>>>>>[-<<<<<<+>>>>>>]<<<<++++++++++++++++++++<++++++++++++++++++++++++++++++++++>>>]<<<-[->>>+<+<<]>>>[-<<<+>>>]+<[[-]>-<]>[->>+[-<<<<<<<<<<<<<<<<<<->>>>>>>>>>>>>>>>>>]+[-<<<<<<<->>>>>>>]<<<<<<<[->>>>>>>>+<+<<<<<<<]>>>>>>>>[-<<<<<<<<+>>>>>>>>]+<[<<<<+++++++++++++++++++++>>>>[-]>-<]>[<<<<<+++++++++++++++++++++++>>>>>-]<<<<<<++++++++++++++++++++++++++++++++++>>>]<<<-[->>>+<+<<]>>>[-<<<+>>>]+<[[-]>-<]>[-<<<<<<<<<<<<<<<<[->>>>>>>>>>>>>>>>>>>+<+<<<<<<<<<<<<<<<<<<]>>>>>>>>>>>>>>>>>>>[-<<<<<<<<<<<<<<<<<<<+>>>>>>>>>>>>>>>>>>>]+<[<<<<++++++++++++++++++++>>>>[-]>-<]>[<<<<<++++++++++++++++++++++>>>>>-]<<<<<<++++++++++++++++++++++++++++++++++>>>]<<<-[->>>+<+<<]>>>[-<<<+>>>]+<[[-]>-<]>[->>+[-<<<<<<<<<<<<<<<<<<<<<<<+>>>>>>>>>>>>>>>>>>>>>>>]<<<<+++++++++++++++++++<++++++++++++++++++++++++++++++++++>>>]<<<-[->>>+<+<<]>>>[-<<<+>>>]+<[[-]>-<]>[->>+[-<<<<<<->>>>>>]<<<<<<<<<<<<<<<<<<[->>>>>>>>>>>>>>>>>>>+<+<<<<<<<<<<<<<<<<<<]>>>>>>>>>>>>>>>>>>>[-<<<<<<<<<<<<<<<<<<<+>>>>>>>>>>>>>>>>>>>]<[-<<<<<<->>>>>>]<<<<<<<<<<<<<<<<<<[-]>>>>>>>>>>>>[->>>>>>+<<<<<<<<<<<<<<<<<<+>>>>>>>>>>>>]>>>>>>[-<<<<<<+>>>>>>]<<<<++++++++++++++++++++++++<++++++++++++++++++++++++++++++++++>>>]<<<-[->>>+<+<<]>>>[-<<<+>>>]+<[[-]>-<]>[->>++++++++++++++++++++++++++++++++++++++++++++++++[-<<<<<<<<<<<<<<<<<<+>>>>>>>>>>>>>>>>>>]<[->>>>>>+<<<<<<]<<<<<<<<<<<<<<<<<[->>>>>>>>>>>>>>>>>>>+<+<<<<<<<<<<<<<<<<<<]>>>>>>>>>>>>>>>>>>>[-<<<<<<<<<<<<<<<<<<<+>>>>>>>>>>>>>>>>>>>]>>>>+[-[->>+>+<<<]>>>]<<[-]<<[<<<[>>>[-]<<<<<<]]>>>[-<<+>>]<<<<<<<[->>>>>+[-[->>+>+<<<]>>>]<<+<<[<<<[>>>[-]<<<<<<]]>>>[-<<+>>]<<<<<<<]>>>>>[-<<<<<<+>>>>>>]<<<<<<+>+[-<<<<<<<<<<<<<<<<+>>>>>>>>>>>>>>>>]<<<<<<<<<<<<<<<<<[-]<<<<<<[->>>>>>>>>>>>>>>>>>>>>>>+<<<<<<<<<<<<<<<<<+<<<<<<]>>>>>>>>>>>>>>>>>>>>>>>[-<<<<<<<<<<<<<<<<<<<<<<<+>>>>>>>>>>>>>>>>>>>>>>>]<<<<<<<<<<<<<<<<<[->>>>>>>>>>>>>>>>>>+<+<<<<<<<<<<<<<<<<<]>>>>>>>>>>>>>>>>>>[-<<<<<<<<<<<<<<<<<<+>>>>>>>>>>>>>>>>>>]+<[<<<<++++++++++++++++>>>>[-]>-<]>[<<<<<+++++++++++++++++++++++++>>>>>-]<<<<<<++++++++++++++++++++++++++++++++++>>>]<<<-[->>>+<+<<]>>>[-<<<+>>>]+<[[-]>-<]>[-<<<<<<<<<<<<<<[->>>>>>>>>>>>>>>>>+<+<<<<<<<<<<<<<<<<]>>>>>>>>>>>>>>>>>[-<<<<<<<<<<<<<<<<<+>>>>>>>>>>>>>>>>>]+<[<<<<++++++++++++++++++++++++++>>>>[-]>-<]>[<<<<<+++++++++++++++++++++++++++>>>>>-]<<<<<<++++++++++++++++++++++++++++++++++>>>]<<<-[->>>+<+<<]>>>[-<<<+>>>]+<[[-]>-<]>[->>+[-<<<<<<<<<<<<<<<<->>>>>>>>>>>>>>>>]<-<<<<<<<<<<<<<<<<[-]>>>>>>>>>>>>>>>>[->>>>>>+<<<<<<]>>>>>>+[-[->>+>+<<<]>>>]<<[-<<[<<<[>>>[-]<<<<<<]]>>>[-<<+>>]<<<<<<<+>>>>>+[-[->>+>+<<<]>>>]<<]<<[<<<[>>>[-]<<<<<<]]>>>[-<<+>>]<<<<<<<[->+<<<<<<<<<<<<<<<<<<+>>>>>>>>>>>>>>>>>]>[-<+>]>>>>+[-[->>+>+<<<]>>>]<<[-]<<[<<<[>>>[-]<<<<<<]]>>>[-<<+>>]<<<<<<<[->>>>>+[-[->>+>+<<<]>>>]<<+<<[<<<[>>>[-]<<<<<<]]>>>[-<<+>>]<<<<<<<]>>>>>[-<<<<<<+>>>>>>]<<<<<<<<<<<<<<<<<<<<<<.>>>>>>>>>>>>>+++++++++++++++++++++++++<++++++++++++++++++++++++++++++++++>>>]<<<-[->>>+<+<<]>>>[-<<<+>>>]+<[[-]>-<]>[->-<<<[-]>>>[->>>>>>+<<<<<<]>>>>>>+[-[->>+>+<<<]>>>]<<[-<<[<<<[>>>[-]<<<<<<]]>>>[-<<+>>]<<<<<<<+>>>>>+[-[->>+>+<<<]>>>]<<]<<[<<<[>>>[-]<<<<<<]]>>>[-<<+>>]<<<<<<<[->+<<<<<+>>>>]>[-<+>]>>>>+[-[->>+>+<<<]>>>]<<[-]<<[<<<[>>>[-]<<<<<<]]>>>[-<<+>>]<<<<<<<[->>>>>+[-[->>+>+<<<]>>>]<<+<<[<<<[>>>[-]<<<<<<]]>>>[-<<+>>]<<<<<<<]>>>>>[-<<<<<<+>>>>>>]<<<<<<<<<<++++++++++++++++++++++++++++++++++>>>]<<<-[->>>+<+<<]>>>[-<<<+>>>]+<[[-]>-<]>[-<<<<<<<<<<<<<<<<<<<<<[-]++++++++++++++++++++++++++++>>>>>>>>>>>>>>>>>>>>>>[->>>>>>+<<<<<<]>>>>>>+[-[->>+>+<<<]>>>]<<[-]+++++++++++++++++++++++++++++<<[<<<[>>>[-]<<<<<<]]>>>[-<<+>>]<<[-<<<<<<+>>>>>>]<<<<<<+<<<+<++++++++++++++++++++++++++++++++++>>>]<<<-[->>>+<+<<]>>>[-<<<+>>>]+<[[-]>-<]>[-<<<<<<<<<<<<<[-]+>[-]>[-]>,>,>>>>>>>>>>>++++++++++++++++++++++++++++++++++++++++++++++++[-<<<<<<<<<<<<->>>>>>>>>>>>]++++++++++++++++++++++++++++++++++++++++++++++++[-<<<<<<<<<<<->>>>>>>>>>>]<<<<<<<<<<[-]++++++++++>[-]<[->>>>>>>>>>>>>+<<<+<<<<<<<<<<]>>>>>>>>>>>>>[-<<<<<<<<<<<<<+>>>>>>>>>>>>>]<<<<<<<<<<<<<<<[->>>>>>>>>>>>>>>+<<+<<<<<<<<<<<<<]>>>>>>>>>>>>>>>[-<<<<<<<<<<<<<<<+>>>>>>>>>>>>>>>]<<<[>[->>+<+<]>>[-<<+>>]<[-<<<<<<<<<<<+>>>>>>>>>>>]<<-]>[-]<<<<<<<<<<<<[->>>>>>>>>>>>+<+<<<<<<<<<<<]>>>>>>>>>>>>[-<<<<<<<<<<<<+>>>>>>>>>>>>]<[-<<<<<<<<<+>>>>>>>>>]<<<<<<<<<<<<<<<<<<<<<<<[-]+++++++++++++++++++++++++>>>>>>>>>>>>>>>>>>>>>>[->>>>>>+<<<<<<]>>>>>>+[-[->>+>+<<<]>>>]<<[-]++++++++++++++++++++++++++++++<<[<<<[>>>[-]<<<<<<]]>>>[-<<+>>]<<[-<<<<<<+>>>>>>]<<<<<<+<<<+<++++++++++++++++++++++++++++++++++>>>]<<<-[->>>+<+<<]>>>[-<<<+>>>]+<[[-]>-<]>[-<<<<<<[-]<<<<<<<[->>>>>>>>>>>>>>>+<<<<<<<<+<<<<<<<]>>>>>>>>>>>>>>>[-<<<<<<<<<<<<<<<+>>>>>>>>>>>>>>>]<<<<<<<<<<<<<<[->>>>>>>>>>>>>>>+<+<<<<<<<<<<<<<<]>>>>>>>>>>>>>>>[-<<<<<<<<<<<<<<<+>>>>>>>>>>>>>>>]<[-<<<<<<<<+>>>>>>>>]<<<<<<<<<<<<<<<[-]>[->>>>>>>>>>>>>>+<<<<<<<<<<<<<<<+>]>>>>>>>>>>>>>>[-<<<<<<<<<<<<<<+>>>>>>>>>>>>>>]<<<<<<<<<<<<<<[-]>>>>>>[->>>>>>>>+<<<<<<<<<<<<<<+>>>>>>]>>>>>>>>[-<<<<<<<<+>>>>>>>>]<<<<<<<<<<<<<<<<<<<<<<<[-]++>>>>>[-]>>>>>>>>>>>>>>>>>>>>>>>++++++++++++++++<<<<<<<<<<<<<<<<<<[->>>>>>>>>>>>>>+<+<<<<<<<<<<<<<]>>>>>>>>>>>>>>[-<<<<<<<<<<<<<<+>>>>>>>>>>>>>>]>>>>+[-[->>+>+<<<]>>>]<<[-]<<[<<<[>>>[-]<<<<<<]]>>>[-<<+>>]<<<<<<<[->>>>>+[-[->>+>+<<<]>>>]<<+<<[<<<[>>>[-]<<<<<<]]>>>[-<<+>>]<<<<<<<]>>>>>[-]+++++++++++++++++<<<<<<<<<<<<<[->>>>>>>>>+<+<<<<<<<<]>>>>>>>>>[-<<<<<<<<<+>>>>>>>>>]>>>>+[-[->>+>+<<<]>>>]<<[-]<<[<<<[>>>[-]<<<<<<]]>>>[-<<+>>]<<<<<<<[->>>>>+[-[->>+>+<<<]>>>]<<+<<[<<<[>>>[-]<<<<<<]]>>>[-<<+>>]<<<<<<<]>>>>>[-]<<<<<<[->>>>>>+<<<<<<]>>>>>>+[-[->>+>+<<<]>>>]<<[-]+++++++++++++++++++++++++++++++<<[<<<[>>>[-]<<<<<<]]>>>[-<<+>>]<<[-<<<<<<+>>>>>>]<<<<<<+<<<+<++++++++++++++++++++++++++++++++++>>>]<<<-[->>>+<+<<]>>>[-<<<+>>>]+<[[-]>-<]>[->>+[-<<<<<<<<<<<<<+>>>>>>>>>>>>>]<<<<<<<<<<<<<[->>>>>>>>>>>>>>>+<<+<<<<<<<<<<<<<]>>>>>>>>>>>>>>>[-<<<<<<<<<<<<<<<+>>>>>>>>>>>>>>>]<<<<<<<<<<<[->>>>>>>>>>>+<+<<<<<<<<<<]>>>>>>>>>>>[-<<<<<<<<<<<+>>>>>>>>>>>]<[<[->>>>+<+<<<]>>>>[-<<<<+>>>>]<<+>[<->[-]]<<-<->]<[-]>>[-<<+>>]<+<[<<<<++++++++++++++++++++++++++++++>>>>[-]>-<]>[<<<<<++++++++++++++++++++++++++++++++>>>>>-]<<<<<<++++++++++++++++++++++++++++++++++>>>]<<<-[->>>+<+<<]>>>[-<<<+>>>]+<[[-]>-<]>[-<<++++++++++++++++++++++++++++++++<[-]>>>]<<<]
Sample output:
Prime test
==========
Please enter 3 digits (between 001 and 255): 120
120 is not a prime-number.
-> 2 is divisor.
-> 3 is divisor.
-> 4 is divisor.
-> 5 is divisor.
-> 6 is divisor.
-> 8 is divisor.
-> 10 is divisor.
-> 12 is divisor.
-> 15 is divisor.
-> 20 is divisor.
-> 24 is divisor.
-> 30 is divisor.
-> 40 is divisor.
-> 60 is divisor.
Asm-code:
stacksize 32
global 1 " -> %u is divisor.\n\0"
global 22 "%u is a prime-number.\0"
global 44 "%u is not a prime-number.\0"
global 70 "\n\n\0"
global 73 "Prime test\n==========\n\nPlease enter 3 digits (between 001 and 255): \0"
mov $0, 73
call printf
in $0
sub $0, 48
in $1
sub $1, 48
in $2
sub $2, 48
mov $5, 100
mul $3, $0, $5
mov $5, 10
mul $4, $1, $5
add $3, $4
add $3, $2
mov $0, 70
push $3
call printf
pop $3
mov $4, $3
mov $5, 2
mov $6, 0
jle $4, $5, skip_primetest_loop
sub $4, 1
primetest_loop:
div $0, $1, $3, $4
jnz $1, primetest_loop_no_divisor
push $4
add $6, 1
primetest_loop_no_divisor:
sub $4, 1
mov $5, 2
jge $4, $5, primetest_loop
skip_primetest_loop:
mov $0, 70
push $3
push $6
call printf
pop $6
pop $3
jz $6, is_prime
push $6
mov $0, 44
mov $1, 0
mov [0], $3
call printf
mov $0, 70
call printf
pop $6
primetest_print_primes_loop:
pop $0
mov [0], $0
mov $0, 1
mov $1, 0
push $6
call printf
pop $6
sub $6, 1
jnz $6, primetest_print_primes_loop
jmp __end
is_prime:
mov $0, 22
mov $1, 0
mov [0], $3
call printf
mov $0, 70
call printf
jmp __end
//$0 is offset of string (has to end with \0) (will be changed)
//$1 is offset of arguments (will be changed)
//$2-$8 reserved (will be written)
//%u is the only replacement possibility (% can be escaped with \%)
printf:
printf_loop:
mov $3, [$0]
jz $3, printf_end
add $0, 1
mov $4, [$0]
mov $2, 92
jne $3, $2, printf_skip_escape // '\'
je $4, $2, printf_escape // '\'
mov $2, 37
je $4, $2, printf_escape // '%'
jmp printf_error
printf_escape:
mov $3, $4
add $0, 1
printf_skip_escape:
mov $2, 37
jne $3, $2, printf_replace_escape // '%'
mov $2, 117 // 'u'
jne $4, $2, printf_error
add $0, 1
mov $7, $0
mov $8, $1
mov $0, [$1]
add $8, 1
call print_decimal
mov $1, $8
mov $0, $7
jmp printf_loop
printf_replace_escape:
out $3
jmp printf_loop
jmp printf_end
printf_error:
out 73
out 78
out 86
printf_end:
ret
//$0 is the decimal
//$1-$6 will be changed
print_decimal:
mov $5, $0
mov $6, 0
print_decimal_loop0:
mov $3, 10
div $0, $1, $5, $3
add $1, 48
push $1
add $6, 1
mov $5, $0
jnz $5, print_decimal_loop0
print_decimal_loop1:
jz $6, print_decimal_end
sub $6, 1
pop $5
out $5
jmp print_decimal_loop1
print_decimal_end:
ret
__end:
Brainfuck-code:
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>+++++[-<++++++>]<++>>>>+++++[-<++++++>]<++>>>>++++++[-<+++++++>]<+++>>>>+++++++[-<++++++++>]<++++++>>>>+++++[-<++++++>]<++>>>>++++++[-<++++++>]<+>>>>++++++++++[-<+++++++++++>]<+++++++>>>>+++++[-<++++++>]<++>>>>++++++++++[-<++++++++++>]<+++++>>>>++++++++++[-<+++++++++++>]<+++++>>>>+++++[-<++++++>]<++>>>>++++++++++[-<++++++++++>]>>>++++++++++[-<++++++++++>]<+++++>>>>++++++++++[-<+++++++++++>]<++++++++>>>>++++++++++[-<++++++++++>]<+++++>>>>++++++++++[-<+++++++++++>]<+++++>>>>++++++++++[-<+++++++++++>]<+>>>>++++++++++[-<+++++++++++>]<++++>>>>++++++[-<+++++++>]<++++>>>++++++++++>>>>>>>++++++[-<++++++>]<+>>>>++++++++++[-<+++++++++++>]<+++++++>>>>+++++[-<++++++>]<++>>>>++++++++++[-<++++++++++>]<+++++>>>>++++++++++[-<+++++++++++>]<+++++>>>>+++++[-<++++++>]<++>>>>+++++++++[-<++++++++++>]<+++++++>>>>+++++[-<++++++>]<++>>>>++++++++++[-<+++++++++++>]<++>>>>++++++++++[-<+++++++++++>]<++++>>>>++++++++++[-<++++++++++>]<+++++>>>>++++++++++[-<++++++++++>]<+++++++++>>>>++++++++++[-<++++++++++>]<+>>>>++++++[-<+++++++>]<+++>>>>+++++++++++[-<++++++++++>]>>>++++++++++[-<+++++++++++>]<+++++++>>>>++++++++++[-<++++++++++>]<+++++++++>>>>+++++++++[-<++++++++++>]<++++++++>>>>++++++++++[-<++++++++++>]<+>>>>++++++++++[-<+++++++++++>]<++++>>>>++++++[-<+++++++>]<++++>>>>>>>++++++[-<++++++>]<+>>>>++++++++++[-<+++++++++++>]<+++++++>>>>+++++[-<++++++>]<++>>>>++++++++++[-<++++++++++>]<+++++>>>>++++++++++[-<+++++++++++>]<+++++>>>>+++++[-<++++++>]<++>>>>+++++++++++[-<++++++++++>]>>>++++++++++[-<+++++++++++>]<+>>>>++++++++++[-<+++++++++++>]<++++++>>>>+++++[-<++++++>]<++>>>>+++++++++[-<++++++++++>]<+++++++>>>>+++++[-<++++++>]<++>>>>++++++++++[-<+++++++++++>]<++>>>>++++++++++[-<+++++++++++>]<++++>>>>++++++++++[-<++++++++++>]<+++++>>>>++++++++++[-<++++++++++>]<+++++++++>>>>++++++++++[-<++++++++++>]<+>>>>++++++[-<+++++++>]<+++>>>>+++++++++++[-<++++++++++>]>>>++++++++++[-<+++++++++++>]<+++++++>>>>++++++++++[-<++++++++++>]<+++++++++>>>>+++++++++[-<++++++++++>]<++++++++>>>>++++++++++[-<++++++++++>]<+>>>>++++++++++[-<+++++++++++>]<++++>>>>++++++[-<+++++++>]<++++>>>>>>++++++++++>>>++++++++++>>>>>>>++++++++[-<+++++++++>]<++++++++>>>>++++++++++[-<+++++++++++>]<++++>>>>++++++++++[-<++++++++++>]<+++++>>>>++++++++++[-<++++++++++>]<+++++++++>>>>++++++++++[-<++++++++++>]<+>>>>+++++[-<++++++>]<++>>>>++++++++++[-<+++++++++++>]<++++++>>>>++++++++++[-<++++++++++>]<+>>>>++++++++++[-<+++++++++++>]<+++++>>>>++++++++++[-<+++++++++++>]<++++++>>>++++++++++>>>>+++++++[-<++++++++>]<+++++>>>>+++++++[-<++++++++>]<+++++>>>>+++++++[-<++++++++>]<+++++>>>>+++++++[-<++++++++>]<+++++>>>>+++++++[-<++++++++>]<+++++>>>>+++++++[-<++++++++>]<+++++>>>>+++++++[-<++++++++>]<+++++>>>>+++++++[-<++++++++>]<+++++>>>>+++++++[-<++++++++>]<+++++>>>>+++++++[-<++++++++>]<+++++>>>++++++++++>>>++++++++++>>>>++++++++[-<+++++++++>]<++++++++>>>>++++++++++[-<++++++++++>]<++++++++>>>>++++++++++[-<++++++++++>]<+>>>>+++++++++[-<++++++++++>]<+++++++>>>>++++++++++[-<+++++++++++>]<+++++>>>>++++++++++[-<++++++++++>]<+>>>>+++++[-<++++++>]<++>>>>++++++++++[-<++++++++++>]<+>>>>+++++++++++[-<++++++++++>]>>>++++++++++[-<+++++++++++>]<++++++>>>>++++++++++[-<++++++++++>]<+>>>>++++++++++[-<+++++++++++>]<++++>>>>+++++[-<++++++>]<++>>>>+++++++[-<+++++++>]<++>>>>+++++[-<++++++>]<++>>>>++++++++++[-<++++++++++>]>>>++++++++++[-<++++++++++>]<+++++>>>>++++++++++[-<++++++++++>]<+++>>>>++++++++++[-<++++++++++>]<+++++>>>>++++++++++[-<+++++++++++>]<++++++>>>>++++++++++[-<+++++++++++>]<+++++>>>>+++++[-<++++++>]<++>>>>++++++[-<++++++>]<++++>>>>+++++++++[-<++++++++++>]<++++++++>>>>++++++++++[-<++++++++++>]<+>>>>++++++++++[-<+++++++++++>]<++++++>>>>++++++++++[-<+++++++++++>]<+++++++++>>>>++++++++++[-<++++++++++>]<+>>>>++++++++++[-<++++++++++>]<+>>>>+++++++++++[-<++++++++++>]>>>+++++[-<++++++>]<++>>>>++++++[-<+++++++>]<++++++>>>>++++++[-<+++++++>]<++++++>>>>+++++++[-<+++++++>]>>>+++++[-<++++++>]<++>>>>+++++++++[-<++++++++++>]<+++++++>>>>+++++++++++[-<++++++++++>]>>>++++++++++[-<++++++++++>]>>>+++++[-<++++++>]<++>>>>+++++++[-<+++++++>]<+>>>>+++++++[-<+++++++>]<++++>>>>+++++++[-<+++++++>]<++++>>>>++++++[-<++++++>]<+++++>>>>+++++++[-<++++++++>]<++>>>>+++++[-<++++++>]<++<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<+[[-]>[-<+>]<[->>>+<+<<]>>>[-<<<+>>>]+<[[-]>-<]>[-<<<<<<<<<<<<<<<<[-]+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++>>>>>>>>>>>>>>>>>[->>>>>>+<<<<<<]>>>>>>+[-[->>+>+<<<]>>>]<<[-]+<<[<<<[>>>[-]<<<<<<]]>>>[-<<+>>]<<[-<<<<<<+>>>>>>]<<<<<<+<<<++++++++++++++++++++++++++<+++++++++++++++++++++++++++++++++++++++++++++++++++++++>>>]<<<-[->>>+<+<<]>>>[-<<<+>>>]+<[[-]>-<]>[-<<<<<<<<<<<<<<<<,>>>>>>>>>>>>>>>>>>++++++++++++++++++++++++++++++++++++++++++++++++[-<<<<<<<<<<<<<<<<<<->>>>>>>>>>>>>>>>>>]<<<<<<<<<<<<<<<<<,>>>>>>>>>>>>>>>>>++++++++++++++++++++++++++++++++++++++++++++++++[-<<<<<<<<<<<<<<<<<->>>>>>>>>>>>>>>>>]<<<<<<<<<<<<<<<<,>>>>>>>>>>>>>>>>++++++++++++++++++++++++++++++++++++++++++++++++[-<<<<<<<<<<<<<<<<->>>>>>>>>>>>>>>>]<<<<<<<<<<<<<<<[-]++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++>[-]<[->>>>>>>>>>>>>>>>>>+<<<+<<<<<<<<<<<<<<<]>>>>>>>>>>>>>>>>>>[-<<<<<<<<<<<<<<<<<<+>>>>>>>>>>>>>>>>>>]<<<<<<<<<<<<<<<<<<<<<[->>>>>>>>>>>>>>>>>>>>>+<<+<<<<<<<<<<<<<<<<<<<]>>>>>>>>>>>>>>>>>>>>>[-<<<<<<<<<<<<<<<<<<<<<+>>>>>>>>>>>>>>>>>>>>>]<<<[>[->>+<+<]>>[-<<+>>]<[-<<<<<<<<<<<<<<<<+>>>>>>>>>>>>>>>>]<<-]>[-]<<<<<<<<<<<<<<<<[-]++++++++++>>[-]<<[->>>>>>>>>>>>>>>>>>+<<<+<<<<<<<<<<<<<<<]>>>>>>>>>>>>>>>>>>[-<<<<<<<<<<<<<<<<<<+>>>>>>>>>>>>>>>>>>]<<<<<<<<<<<<<<<<<<<<[->>>>>>>>>>>>>>>>>>>>+<<+<<<<<<<<<<<<<<<<<<]>>>>>>>>>>>>>>>>>>>>[-<<<<<<<<<<<<<<<<<<<<+>>>>>>>>>>>>>>>>>>>>]<<<[>[->>+<+<]>>[-<<+>>]<[-<<<<<<<<<<<<<<<+>>>>>>>>>>>>>>>]<<-]>[-]<<<<<<<<<<<<<<[->>>>>>>>>>>>>>+<+<<<<<<<<<<<<<]>>>>>>>>>>>>>>[-<<<<<<<<<<<<<<+>>>>>>>>>>>>>>]<[-<<<<<<<<<<<<<<+>>>>>>>>>>>>>>]<<<<<<<<<<<<<<<<[->>>>>>>>>>>>>>>>>+<+<<<<<<<<<<<<<<<<]>>>>>>>>>>>>>>>>>[-<<<<<<<<<<<<<<<<<+>>>>>>>>>>>>>>>>>]<[-<<<<<<<<<<<<<<+>>>>>>>>>>>>>>]<<<<<<<<<<<<<<<<<<[-]++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++>>>>>>>>>>>>>>>>>[->>>>>>+<<<<<<]<<<<<<<<<<<<<[->>>>>>>>>>>>>>>+<+<<<<<<<<<<<<<<]>>>>>>>>>>>>>>>[-<<<<<<<<<<<<<<<+>>>>>>>>>>>>>>>]>>>>+[-[->>+>+<<<]>>>]<<[-]<<[<<<[>>>[-]<<<<<<]]>>>[-<<+>>]<<<<<<<[->>>>>+[-[->>+>+<<<]>>>]<<+<<[<<<[>>>[-]<<<<<<]]>>>[-<<+>>]<<<<<<<]>>>>>[-<<<<<<+>>>>>>]<<<<<<+[->>>>>>+<<<<<<]>>>>>>+[-[->>+>+<<<]>>>]<<[-]++<<[<<<[>>>[-]<<<<<<]]>>>[-<<+>>]<<[-<<<<<<+>>>>>>]<<<<<<+<<<++++++++++++++++++++++++++<+++++++++++++++++++++++++++++++++++++++++++++++++++++++>>>]<<<-[->>>+<+<<]>>>[-<<<+>>>]+<[[-]>-<]>[->-<<<<<<<<<<<<<[-]>>>>>>>>>>>>>[->>>>>>+<<<<<<]>>>>>>+[-[->>+>+<<<]>>>]<<[-<<[<<<[>>>[-]<<<<<<]]>>>[-<<+>>]<<<<<<<+>>>>>+[-[->>+>+<<<]>>>]<<]<<[<<<[>>>[-]<<<<<<]]>>>[-<<+>>]<<<<<<<[->+<<<<<<<<<<<<<<<+>>>>>>>>>>>>>>]>[-<+>]>>>>+[-[->>+>+<<<]>>>]<<[-]<<[<<<[>>>[-]<<<<<<]]>>>[-<<+>>]<<<<<<<[->>>>>+[-[->>+>+<<<]>>>]<<+<<[<<<[>>>[-]<<<<<<]]>>>[-<<+>>]<<<<<<<]>>>>>[-<<<<<<+>>>>>>]<<<<<<<<<<<<<<<<<<[-]<[->>>>>>>>>>>>>>+<<<<<<<<<<<<<+<]>>>>>>>>>>>>>>[-<<<<<<<<<<<<<<+>>>>>>>>>>>>>>]<<<<<<<<<<<<<<<[-]++>>>[-]<[->>>>>>>>>>>>>>>+<<+<<<<<<<<<<<<<]>>>>>>>>>>>>>>>[-<<<<<<<<<<<<<<<+>>>>>>>>>>>>>>>]<<<<<<<<<<<<<<<<<[->>>>>>>>>>>>>>>>>+<+<<<<<<<<<<<<<<<<]>>>>>>>>>>>>>>>>>[-<<<<<<<<<<<<<<<<<+>>>>>>>>>>>>>>>>>]<+[<[->>>>+<+<<<]>>>>[-<<<<+>>>>]<<+>[<->[-]]<<-<->]<[-]>>[-<<+>>]<+<[<<<<+++++++++++++++>>>>[-]>-<]>[<<<<<+++>>>>>-]<<<<<<+++++++++++++++++++++++++++++++++++++++++++++++++++++++>>>]<<<-[->>>+<+<<]>>>[-<<<+>>>]+<[[-]>-<]>[->>+[-<<<<<<<<<<<<<->>>>>>>>>>>>>]<<<<++++<+++++++++++++++++++++++++++++++++++++++++++++++++++++++>>>]<<<-[->>>+<+<<]>>>[-<<<+>>>]+<[[-]>-<]>[-<<<<<<<<<<<<<<<<[-]>[-]>>>>>>>>[-]<<<<<[->>>>>>>>>>>>>>+<<<<<<<<<+<<<<<]>>>>>>>>>>>>>>[-<<<<<<<<<<<<<<+>>>>>>>>>>>>>>]<<<<<<<<[-]<<<<<[->>>>>>>>>>>>>+<<<<<<<<+<<<<<]>>>>>>>>>>>>>[-<<<<<<<<<<<<<+>>>>>>>>>>>>>]<<<<<<<<<[->>>>>>>>>>+<+<<<<<<<<<]>>>>>>>>>>[-<<<<<<<<<<+>>>>>>>>>>]+<[<<<<+++++>>>>[-]>-<]>[<<<<<++++++++++++>>>>>-]<<<<<<+++++++++++++++++++++++++++++++++++++++++++++++++++++++>>>]<<<-[->>>+<+<<]>>>[-<<<+>>>]+<[[-]>-<]>[-<<<<<<[->>>>>>>>>+<+<<<<<<<<]>>>>>>>>>[-<<<<<<<<<+>>>>>>>>>]+<[<<<<++++++>>>>[-]>-<]>[<<<<<++++++++++++>>>>>-]<<<<<<+++++++++++++++++++++++++++++++++++++++++++++++++++++++>>>]<<<-[->>>+<+<<]>>>[-<<<+>>>]+<[[-]>-<]>[->>+[-<<<<<<<<<+>>>>>>>>>]<<<<+++++++<+++++++++++++++++++++++++++++++++++++++++++++++++++++++>>>]<<<-[->>>+<+<<]>>>[-<<<+>>>]+<[[-]>-<]>[-<<<<<<<<<<<<<<<[-]>>>>>>>>>[->>>>>>>>+<<<<<<<<<<<<<<<<<+>>>>>>>>>]>>>>>>>>[-<<<<<<<<+>>>>>>>>]<<<<++++++++<+++++++++++++++++++++++++++++++++++++++++++++++++++++++>>>]<<<-[->>>+<+<<]>>>[-<<<+>>>]+<[[-]>-<]>[->>+[-<<<<<<<<<<<<<<<<<->>>>>>>>>>>>>>>>>]+[-<<<<<<<<<->>>>>>>>>]<<<<<<<<<[->>>>>>>>>>+<+<<<<<<<<<]>>>>>>>>>>[-<<<<<<<<<<+>>>>>>>>>>]+<[<<<<+++++++++>>>>[-]>-<]>[<<<<<+++++++++++>>>>>-]<<<<<<+++++++++++++++++++++++++++++++++++++++++++++++++++++++>>>]<<<-[->>>+<+<<]>>>[-<<<+>>>]+<[[-]>-<]>[-<<<<<<<<<<<<<<<[->>>>>>>>>>>>>>>>>>+<+<<<<<<<<<<<<<<<<<]>>>>>>>>>>>>>>>>>>[-<<<<<<<<<<<<<<<<<<+>>>>>>>>>>>>>>>>>>]+<[<<<<++++++++>>>>[-]>-<]>[<<<<<++++++++++>>>>>-]<<<<<<+++++++++++++++++++++++++++++++++++++++++++++++++++++++>>>]<<<-[->>>+<+<<]>>>[-<<<+>>>]+<[[-]>-<]>[->>+[-<<<<<<<<<<<<<<<<<<+>>>>>>>>>>>>>>>>>>]<<<<+++++++<+++++++++++++++++++++++++++++++++++++++++++++++++++++++>>>]<<<-[->>>+<+<<]>>>[-<<<+>>>]+<[[-]>-<]>[->>+[-<<<<<<<<->>>>>>>>]<<<<<<<<<<<<<<<<<[->>>>>>>>>>>>>>>>>>+<+<<<<<<<<<<<<<<<<<]>>>>>>>>>>>>>>>>>>[-<<<<<<<<<<<<<<<<<<+>>>>>>>>>>>>>>>>>>]<[-<<<<<<<<->>>>>>>>]<<<<<<<<<<<<<<<<<[-]>>>>>>>>>[->>>>>>>>+<<<<<<<<<<<<<<<<<+>>>>>>>>>]>>>>>>>>[-<<<<<<<<+>>>>>>>>]<<<<++++++++++++<+++++++++++++++++++++++++++++++++++++++++++++++++++++++>>>]<<<-[->>>+<+<<]>>>[-<<<+>>>]+<[[-]>-<]>[-<<<<<<<<<<<<<<<[->>>>>>>>>>>>>>>>>>+<+<<<<<<<<<<<<<<<<<]>>>>>>>>>>>>>>>>>>[-<<<<<<<<<<<<<<<<<<+>>>>>>>>>>>>>>>>>>]+<[<<<<++++++++++++++>>>>[-]>-<]>[<<<<<+++++++++++++>>>>>-]<<<<<<+++++++++++++++++++++++++++++++++++++++++++++++++++++++>>>]<<<-[->>>+<+<<]>>>[-<<<+>>>]+<[[-]>-<]>[->[->>>>>>+<<<<<<]<<<<<<<<<<<<[->>>>>>>>>>>>>>+<+<<<<<<<<<<<<<]>>>>>>>>>>>>>>[-<<<<<<<<<<<<<<+>>>>>>>>>>>>>>]>>>>+[-[->>+>+<<<]>>>]<<[-]<<[<<<[>>>[-]<<<<<<]]>>>[-<<+>>]<<<<<<<[->>>>>+[-[->>+>+<<<]>>>]<<+<<[<<<[>>>[-]<<<<<<]]>>>[-<<+>>]<<<<<<<]>>>>>[-<<<<<<+>>>>>>]<<<<<<+>+[-<<<<<<<<<<<<+>>>>>>>>>>>>]<<<<++++++++++++++<+++++++++++++++++++++++++++++++++++++++++++++++++++++++>>>]<<<-[->>>+<+<<]>>>[-<<<+>>>]+<[[-]>-<]>[->>+[-<<<<<<<<<<<<<->>>>>>>>>>>>>]<<<<<<<<<<<<<<<[-]++[->>>>>>>>>>>>>>>>>+<<+<<<<<<<<<<<<<<<]>>>>>>>>>>>>>>>>>[-<<<<<<<<<<<<<<<<<+>>>>>>>>>>>>>>>>>]<<<<<<<<<<<<<<<[->>>>>>>>>>>>>>>+<+<<<<<<<<<<<<<<]>>>>>>>>>>>>>>>[-<<<<<<<<<<<<<<<+>>>>>>>>>>>>>>>]<+[<[->>>>+<+<<<]>>>>[-<<<<+>>>>]<<+>[<->[-]]<<-<->]<[-]>>[-<<+>>]<+<[<<<<++++>>>>[-]>-<]>[<<<<<+++++++++++++++>>>>>-]<<<<<<+++++++++++++++++++++++++++++++++++++++++++++++++++++++>>>]<<<-[->>>+<+<<]>>>[-<<<+>>>]+<[[-]>-<]>[-<<<<<<<<<<<<<<<<[-]++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++>>>>>>>>>>>>>>>>>[->>>>>>+<<<<<<]<<<<<<<<<<<<<[->>>>>>>>>>>>>>>+<+<<<<<<<<<<<<<<]>>>>>>>>>>>>>>>[-<<<<<<<<<<<<<<<+>>>>>>>>>>>>>>>]>>>>+[-[->>+>+<<<]>>>]<<[-]<<[<<<[>>>[-]<<<<<<]]>>>[-<<+>>]<<<<<<<[->>>>>+[-[->>+>+<<<]>>>]<<+<<[<<<[>>>[-]<<<<<<]]>>>[-<<+>>]<<<<<<<]>>>>>[-<<<<<<+>>>>>>]<<<<<<+[->>>>>>+<<<<<<]<<<<<<<<<<<[->>>>>>>>>>>>>+<+<<<<<<<<<<<<]>>>>>>>>>>>>>[-<<<<<<<<<<<<<+>>>>>>>>>>>>>]>>>>+[-[->>+>+<<<]>>>]<<[-]<<[<<<[>>>[-]<<<<<<]]>>>[-<<+>>]<<<<<<<[->>>>>+[-[->>+>+<<<]>>>]<<+<<[<<<[>>>[-]<<<<<<]]>>>[-<<+>>]<<<<<<<]>>>>>[-<<<<<<+>>>>>>]<<<<<<+[->>>>>>+<<<<<<]>>>>>>+[-[->>+>+<<<]>>>]<<[-]++++++++++++++++<<[<<<[>>>[-]<<<<<<]]>>>[-<<+>>]<<[-<<<<<<+>>>>>>]<<<<<<+<<<++++++++++++++++++++++++++<+++++++++++++++++++++++++++++++++++++++++++++++++++++++>>>]<<<-[->>>+<+<<]>>>[-<<<+>>>]+<[[-]>-<]>[->-<<<<<<<<<<<[-]>>>>>>>>>>>[->>>>>>+<<<<<<]>>>>>>+[-[->>+>+<<<]>>>]<<[-<<[<<<[>>>[-]<<<<<<]]>>>[-<<+>>]<<<<<<<+>>>>>+[-[->>+>+<<<]>>>]<<]<<[<<<[>>>[-]<<<<<<]]>>>[-<<+>>]<<<<<<<[->+<<<<<<<<<<<<<+>>>>>>>>>>>>]>[-<+>]>>>>+[-[->>+>+<<<]>>>]<<[-]<<[<<<[>>>[-]<<<<<<]]>>>[-<<+>>]<<<<<<<[->>>>>+[-[->>+>+<<<]>>>]<<+<<[<<<[>>>[-]<<<<<<]]>>>[-<<+>>]<<<<<<<]>>>>>[-<<<<<<+>>>>>>]<<<<<<-<<<<<<<<<<<<<[-]>>>>>>>>>>>>>[->>>>>>+<<<<<<]>>>>>>+[-[->>+>+<<<]>>>]<<[-<<[<<<[>>>[-]<<<<<<]]>>>[-<<+>>]<<<<<<<+>>>>>+[-[->>+>+<<<]>>>]<<]<<[<<<[>>>[-]<<<<<<]]>>>[-<<+>>]<<<<<<<[->+<<<<<<<<<<<<<<<+>>>>>>>>>>>>>>]>[-<+>]>>>>+[-[->>+>+<<<]>>>]<<[-]<<[<<<[>>>[-]<<<<<<]]>>>[-<<+>>]<<<<<<<[->>>>>+[-[->>+>+<<<]>>>]<<+<<[<<<[>>>[-]<<<<<<]]>>>[-<<+>>]<<<<<<<]>>>>>[-<<<<<<+>>>>>>]<<<<<<<<<<<<<<<<<[->>>>>>>>>>>>>+<+<<<<<<<<<<<<]>>>>>>>>>>>>>[-<<<<<<<<<<<<<+>>>>>>>>>>>>>]+<[<<<<+++++++++++++++++>>>>[-]>-<]>[<<<<<+++++++++++++++++++++++>>>>>-]<<<<<<+++++++++++++++++++++++++++++++++++++++++++++++++++++++>>>]<<<-[->>>+<+<<]>>>[-<<<+>>>]+<[[-]>-<]>[->[->>>>>>+<<<<<<]<<<<<<<<<<<[->>>>>>>>>>>>>+<+<<<<<<<<<<<<]>>>>>>>>>>>>>[-<<<<<<<<<<<<<+>>>>>>>>>>>>>]>>>>+[-[->>+>+<<<]>>>]<<[-]<<[<<<[>>>[-]<<<<<<]]>>>[-<<+>>]<<<<<<<[->>>>>+[-[->>+>+<<<]>>>]<<+<<[<<<[>>>[-]<<<<<<]]>>>[-<<+>>]<<<<<<<]>>>>>[-<<<<<<+>>>>>>]<<<<<<+<<<<<<<<<<<<<<<<<[-]++++++++++++++++++++++++++++++++++++++++++++>[-]>>>>>>>>>>>>>>>>>>>>>>++++++++++++++++++++++++++++++++<<<<<<<<<<<<<<<<<<<[->>>>>>>>>>>>>>>+<+<<<<<<<<<<<<<<]>>>>>>>>>>>>>>>[-<<<<<<<<<<<<<<<+>>>>>>>>>>>>>>>]>>>>+[-[->>+>+<<<]>>>]<<[-]<<[<<<[>>>[-]<<<<<<]]>>>[-<<+>>]<<<<<<<[->>>>>+[-[->>+>+<<<]>>>]<<+<<[<<<[>>>[-]<<<<<<]]>>>[-<<+>>]<<<<<<<]>>>>>[-]<<<<<<[->>>>>>+<<<<<<]>>>>>>+[-[->>+>+<<<]>>>]<<[-]++++++++++++++++++<<[<<<[>>>[-]<<<<<<]]>>>[-<<+>>]<<[-<<<<<<+>>>>>>]<<<<<<+<<<++++++++++++++++++++++++++<+++++++++++++++++++++++++++++++++++++++++++++++++++++++>>>]<<<-[->>>+<+<<]>>>[-<<<+>>>]+<[[-]>-<]>[-<<<<<<<<<<<<<<<<[-]++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++>>>>>>>>>>>>>>>>>[->>>>>>+<<<<<<]>>>>>>+[-[->>+>+<<<]>>>]<<[-]+++++++++++++++++++<<[<<<[>>>[-]<<<<<<]]>>>[-<<+>>]<<[-<<<<<<+>>>>>>]<<<<<<+<<<++++++++++++++++++++++++++<+++++++++++++++++++++++++++++++++++++++++++++++++++++++>>>]<<<-[->>>+<+<<]>>>[-<<<+>>>]+<[[-]>-<]>[->-<<<<<<<<<<<[-]>>>>>>>>>>>[->>>>>>+<<<<<<]>>>>>>+[-[->>+>+<<<]>>>]<<[-<<[<<<[>>>[-]<<<<<<]]>>>[-<<+>>]<<<<<<<+>>>>>+[-[->>+>+<<<]>>>]<<]<<[<<<[>>>[-]<<<<<<]]>>>[-<<+>>]<<<<<<<[->+<<<<<<<<<<<<<+>>>>>>>>>>>>]>[-<+>]>>>>+[-[->>+>+<<<]>>>]<<[-]<<[<<<[>>>[-]<<<<<<]]>>>[-<<+>>]<<<<<<<[->>>>>+[-[->>+>+<<<]>>>]<<+<<[<<<[>>>[-]<<<<<<]]>>>[-<<+>>]<<<<<<<]>>>>>[-<<<<<<+>>>>>>]<<<<<<<<<++++++++++++++++++++<+++++++++++++++++++++++++++++++++++++++++++++++++++++++>>>]<<<-[->>>+<+<<]>>>[-<<<+>>>]+<[[-]>-<]>[->-<<<<<<<<<<<<<<<<<[-]>>>>>>>>>>>>>>>>>[->>>>>>+<<<<<<]>>>>>>+[-[->>+>+<<<]>>>]<<[-<<[<<<[>>>[-]<<<<<<]]>>>[-<<+>>]<<<<<<<+>>>>>+[-[->>+>+<<<]>>>]<<]<<[<<<[>>>[-]<<<<<<]]>>>[-<<+>>]<<<<<<<[->+<<<<<<<<<<<<<<<<<<<+>>>>>>>>>>>>>>>>>>]>[-<+>]>>>>+[-[->>+>+<<<]>>>]<<[-]<<[<<<[>>>[-]<<<<<<]]>>>[-<<+>>]<<<<<<<[->>>>>+[-[->>+>+<<<]>>>]<<+<<[<<<[>>>[-]<<<<<<]]>>>[-<<+>>]<<<<<<<]>>>>>[-<<<<<<+>>>>>>]++++++++++++++++++++++++++++++++<<<<<<<<<<<<<<<<<<<<<<<[->>>>>>>>>>>>>>>>>>>+<+<<<<<<<<<<<<<<<<<<]>>>>>>>>>>>>>>>>>>>[-<<<<<<<<<<<<<<<<<<<+>>>>>>>>>>>>>>>>>>>]>>>>+[-[->>+>+<<<]>>>]<<[-]<<[<<<[>>>[-]<<<<<<]]>>>[-<<+>>]<<<<<<<[->>>>>+[-[->>+>+<<<]>>>]<<+<<[<<<[>>>[-]<<<<<<]]>>>[-<<+>>]<<<<<<<]>>>>>[-]<<<<<<<<<<<<<<<<<<<<<<<[-]+>[-]>>>>>>>>>>>>>>>>[->>>>>>+<<<<<<]<<<<<<<<<<<[->>>>>>>>>>>>>+<+<<<<<<<<<<<<]>>>>>>>>>>>>>[-<<<<<<<<<<<<<+>>>>>>>>>>>>>]>>>>+[-[->>+>+<<<]>>>]<<[-]<<[<<<[>>>[-]<<<<<<]]>>>[-<<+>>]<<<<<<<[->>>>>+[-[->>+>+<<<]>>>]<<+<<[<<<[>>>[-]<<<<<<]]>>>[-<<+>>]<<<<<<<]>>>>>[-<<<<<<+>>>>>>]<<<<<<+[->>>>>>+<<<<<<]>>>>>>+[-[->>+>+<<<]>>>]<<[-]+++++++++++++++++++++<<[<<<[>>>[-]<<<<<<]]>>>[-<<+>>]<<[-<<<<<<+>>>>>>]<<<<<<+<<<++++++++++++++++++++++++++<+++++++++++++++++++++++++++++++++++++++++++++++++++++++>>>]<<<-[->>>+<+<<]>>>[-<<<+>>>]+<[[-]>-<]>[->-<<<<<<<<<<<[-]>>>>>>>>>>>[->>>>>>+<<<<<<]>>>>>>+[-[->>+>+<<<]>>>]<<[-<<[<<<[>>>[-]<<<<<<]]>>>[-<<+>>]<<<<<<<+>>>>>+[-[->>+>+<<<]>>>]<<]<<[<<<[>>>[-]<<<<<<]]>>>[-<<+>>]<<<<<<<[->+<<<<<<<<<<<<<+>>>>>>>>>>>>]>[-<+>]>>>>+[-[->>+>+<<<]>>>]<<[-]<<[<<<[>>>[-]<<<<<<]]>>>[-<<+>>]<<<<<<<[->>>>>+[-[->>+>+<<<]>>>]<<+<<[<<<[>>>[-]<<<<<<]]>>>[-<<+>>]<<<<<<<]>>>>>[-<<<<<<+>>>>>>]<<<<<+[-<<<<<<<<<<<<->>>>>>>>>>>>]<<<<<<<<<<<<[->>>>>>>>>>>>>+<+<<<<<<<<<<<<]>>>>>>>>>>>>>[-<<<<<<<<<<<<<+>>>>>>>>>>>>>]+<[<<<<++++++++++++++++++++>>>>[-]>-<]>[<<<<<++++++++++++++++++++++>>>>>-]<<<<<<+++++++++++++++++++++++++++++++++++++++++++++++++++++++>>>]<<<-[->>>+<+<<]>>>[-<<<+>>>]+<[[-]>-<]>[-<<+++++++++++++++++++++++++++++++++++++++++++++++++++++<+++++++++++++++++++++++++++++++++++++++++++++++++++++++>>>]<<<-[->>>+<+<<]>>>[-<<<+>>>]+<[[-]>-<]>[-<<<<<<<<<<<<<<<<[-]++++++++++++++++++++++>[-]>>>>>>>>>>>>>>>>>>>>>>++++++++++++++++++++++++++++++++<<<<<<<<<<<<<<<<<<<[->>>>>>>>>>>>>>>+<+<<<<<<<<<<<<<<]>>>>>>>>>>>>>>>[-<<<<<<<<<<<<<<<+>>>>>>>>>>>>>>>]>>>>+[-[->>+>+<<<]>>>]<<[-]<<[<<<[>>>[-]<<<<<<]]>>>[-<<+>>]<<<<<<<[->>>>>+[-[->>+>+<<<]>>>]<<+<<[<<<[>>>[-]<<<<<<]]>>>[-<<+>>]<<<<<<<]>>>>>[-]<<<<<<[->>>>>>+<<<<<<]>>>>>>+[-[->>+>+<<<]>>>]<<[-]++++++++++++++++++++++++<<[<<<[>>>[-]<<<<<<]]>>>[-<<+>>]<<[-<<<<<<+>>>>>>]<<<<<<+<<<++++++++++++++++++++++++++<+++++++++++++++++++++++++++++++++++++++++++++++++++++++>>>]<<<-[->>>+<+<<]>>>[-<<<+>>>]+<[[-]>-<]>[-<<<<<<<<<<<<<<<<[-]++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++>>>>>>>>>>>>>>>>>[->>>>>>+<<<<<<]>>>>>>+[-[->>+>+<<<]>>>]<<[-]+++++++++++++++++++++++++<<[<<<[>>>[-]<<<<<<]]>>>[-<<+>>]<<[-<<<<<<+>>>>>>]<<<<<<+<<<++++++++++++++++++++++++++<+++++++++++++++++++++++++++++++++++++++++++++++++++++++>>>]<<<-[->>>+<+<<]>>>[-<<<+>>>]+<[[-]>-<]>[-<<+++++++++++++++++++++++++++++++++++++++++++++++++++++<+++++++++++++++++++++++++++++++++++++++++++++++++++++++>>>]<<<-[->>>+<+<<]>>>[-<<<+>>>]+<[[-]>-<]>[-<<<<<<<<<<<<<<<<++++++++++++++++++++++++++++++++>>>>[-]<<<<[->>>>>>>>>>>>>>>>>>>>>>>+<<<<<<<<<<<<<<<<<<<<<<<]>>>>>>>>>>>>>>>>>>>>>>>+[-[->>+>+<<<]>>>]<<[-<<[<<<[>>>[-]<<<<<<]]>>>[-<<+>>]<<<<<<<+>>>>>+[-[->>+>+<<<]>>>]<<]<<[<<<[>>>[-]<<<<<<]]>>>[-<<+>>]<<<<<<<[->+<<<<<<<<<<<<<<<+>>>>>>>>>>>>>>]>[-<+>]>>>>+[-[->>+>+<<<]>>>]<<[-]<<[<<<[>>>[-]<<<<<<]]>>>[-<<+>>]<<<<<<<[->>>>>+[-[->>+>+<<<]>>>]<<+<<[<<<[>>>[-]<<<<<<]]>>>[-<<+>>]<<<<<<<]>>>>>[-<<<<<<<<<<<<<<<<<<<<<<<+>>>>>>>>>>>>>>>>>>>>>>>]<<<<<<<<<<<<<<<<<<<<<<<-------------------------------->>>>[->>>>>>>>>>>>>>>+<+<<<<<<<<<<<<<<]>>>>>>>>>>>>>>>[-<<<<<<<<<<<<<<<+>>>>>>>>>>>>>>>]+<[<<<<+++++++++++++++++++++++++++>>>>[-]>-<]>[<<<<<+++++++++++++++++++++++++++++++++++++++>>>>>-]<<<<<<+++++++++++++++++++++++++++++++++++++++++++++++++++++++>>>]<<<-[->>>+<+<<]>>>[-<<<+>>>]+<[[-]>-<]>[->>+[-<<<<<<<<<<<<<<<<<<+>>>>>>>>>>>>>>>>>>]<<<<<<<<<<<<<<<<<<++++++++++++++++++++++++++++++++>>>>>[-]<<<<<[->>>>>>>>>>>>>>>>>>>>>>>+<<<<<<<<<<<<<<<<<<<<<<<]>>>>>>>>>>>>>>>>>>>>>>>+[-[->>+>+<<<]>>>]<<[-<<[<<<[>>>[-]<<<<<<]]>>>[-<<+>>]<<<<<<<+>>>>>+[-[->>+>+<<<]>>>]<<]<<[<<<[>>>[-]<<<<<<]]>>>[-<<+>>]<<<<<<<[->+<<<<<<<<<<<<<<+>>>>>>>>>>>>>]>[-<+>]>>>>+[-[->>+>+<<<]>>>]<<[-]<<[<<<[>>>[-]<<<<<<]]>>>[-<<+>>]<<<<<<<[->>>>>+[-[->>+>+<<<]>>>]<<+<<[<<<[>>>[-]<<<<<<]]>>>[-<<+>>]<<<<<<<]>>>>>[-<<<<<<<<<<<<<<<<<<<<<<<+>>>>>>>>>>>>>>>>>>>>>>>]<<<<<<<<<<<<<<<<<<<<<<<-------------------------------->>[-]++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++>>[->>>>>>>>>>>>>>>>+<<+<<<<<<<<<<<<<<]>>>>>>>>>>>>>>>>[-<<<<<<<<<<<<<<<<+>>>>>>>>>>>>>>>>]<<<<<<<<<<<<<<<<<<[->>>>>>>>>>>>>>>>>>+<+<<<<<<<<<<<<<<<<<]>>>>>>>>>>>>>>>>>>[-<<<<<<<<<<<<<<<<<<+>>>>>>>>>>>>>>>>>>]<[-<->]+<[<<<<++++++++++++++++++++++++++++++++>>>>[-]>-<]>[<<<<<++++++++++++++++++++++++++++>>>>>-]<<<<<<+++++++++++++++++++++++++++++++++++++++++++++++++++++++>>>]<<<-[->>>+<+<<]>>>[-<<<+>>>]+<[[-]>-<]>[-<<<<<<<<<<<[->>>>>>>>>>>>>>>+<<+<<<<<<<<<<<<<]>>>>>>>>>>>>>>>[-<<<<<<<<<<<<<<<+>>>>>>>>>>>>>>>]<<<<<<<<<<<<<<<<<<[->>>>>>>>>>>>>>>>>>+<+<<<<<<<<<<<<<<<<<]>>>>>>>>>>>>>>>>>>[-<<<<<<<<<<<<<<<<<<+>>>>>>>>>>>>>>>>>>]<[-<->]+<[<<<<+++++++++++++++++++++++++++++>>>>[-]>-<]>[<<<<<+++++++++++++++++++++++++++++++>>>>>-]<<<<<<+++++++++++++++++++++++++++++++++++++++++++++++++++++++>>>]<<<-[->>>+<+<<]>>>[-<<<+>>>]+<[[-]>-<]>[-<<<<<<<<<<<<<<[-]+++++++++++++++++++++++++++++++++++++>>>[->>>>>>>>>>>>>>>+<<+<<<<<<<<<<<<<]>>>>>>>>>>>>>>>[-<<<<<<<<<<<<<<<+>>>>>>>>>>>>>>>]<<<<<<<<<<<<<<<<<<[->>>>>>>>>>>>>>>>>>+<+<<<<<<<<<<<<<<<<<]>>>>>>>>>>>>>>>>>>[-<<<<<<<<<<<<<<<<<<+>>>>>>>>>>>>>>>>>>]<[-<->]+<[<<<<++++++++++++++++++++++++++++++>>>>[-]>-<]>[<<<<<+++++++++++++++++++++++++++++++>>>>>-]<<<<<<+++++++++++++++++++++++++++++++++++++++++++++++++++++++>>>]<<<-[->>>+<+<<]>>>[-<<<+>>>]+<[[-]>-<]>[-<<++++++++++++++++++++++++++++++++++++++<+++++++++++++++++++++++++++++++++++++++++++++++++++++++>>>]<<<-[->>>+<+<<]>>>[-<<<+>>>]+<[[-]>-<]>[-<<<<<<<<<<<<[-]>[->>>>>>>>>>>>>+<<<<<<<<<<<<<<+>]>>>>>>>>>>>>>[-<<<<<<<<<<<<<+>>>>>>>>>>>>>]+[-<<<<<<<<<<<<<<<<<<+>>>>>>>>>>>>>>>>>>]<<<<++++++++++++++++++++++++++++++++<+++++++++++++++++++++++++++++++++++++++++++++++++++++++>>>]<<<-[->>>+<+<<]>>>[-<<<+>>>]+<[[-]>-<]>[-<<<<<<<<<<<<<<[-]+++++++++++++++++++++++++++++++++++++>>[->>>>>>>>>>>>>>>>+<<+<<<<<<<<<<<<<<]>>>>>>>>>>>>>>>>[-<<<<<<<<<<<<<<<<+>>>>>>>>>>>>>>>>]<<<<<<<<<<<<<<<<<<[->>>>>>>>>>>>>>>>>>+<+<<<<<<<<<<<<<<<<<]>>>>>>>>>>>>>>>>>>[-<<<<<<<<<<<<<<<<<<+>>>>>>>>>>>>>>>>>>]<[-<->]+<[<<<<++++++++++++++++++++++++++++++++++++>>>>[-]>-<]>[<<<<<+++++++++++++++++++++++++++++++++>>>>>-]<<<<<<+++++++++++++++++++++++++++++++++++++++++++++++++++++++>>>]<<<-[->>>+<+<<]>>>[-<<<+>>>]+<[[-]>-<]>[-<<<<<<<<<<<<<<[-]+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++>>>[->>>>>>>>>>>>>>>+<<+<<<<<<<<<<<<<]>>>>>>>>>>>>>>>[-<<<<<<<<<<<<<<<+>>>>>>>>>>>>>>>]<<<<<<<<<<<<<<<<<<[->>>>>>>>>>>>>>>>>>+<+<<<<<<<<<<<<<<<<<]>>>>>>>>>>>>>>>>>>[-<<<<<<<<<<<<<<<<<<+>>>>>>>>>>>>>>>>>>]<[-<->]+<[<<<<++++++++++++++++++++++++++++++++++++++>>>>[-]>-<]>[<<<<<++++++++++++++++++++++++++++++++++>>>>>-]<<<<<<+++++++++++++++++++++++++++++++++++++++++++++++++++++++>>>]<<<-[->>>+<+<<]>>>[-<<<+>>>]+<[[-]>-<]>[->>+[-<<<<<<<<<<<<<<<<<<+>>>>>>>>>>>>>>>>>>]<<<<<<<<<<<[-]<<<<<<<[->>>>>>>>>>>>>>>>>>+<<<<<<<<<<<+<<<<<<<]>>>>>>>>>>>>>>>>>>[-<<<<<<<<<<<<<<<<<<+>>>>>>>>>>>>>>>>>>]<<<<<<<<<<[-]<<<<<<<[->>>>>>>>>>>>>>>>>+<<<<<<<<<<+<<<<<<<]>>>>>>>>>>>>>>>>>[-<<<<<<<<<<<<<<<<<+>>>>>>>>>>>>>>>>>]<<<<<<<<<<<<<<<<<++++++++++++++++++++++++++++++++<[-]>[->>>>>>>>>>>>>>>>>>>>>>+<<<<<<<<<<<<<<<<<<<<<<]>>>>>>>>>>>>>>>>>>>>>>+[-[->>+>+<<<]>>>]<<[-<<[<<<[>>>[-]<<<<<<]]>>>[-<<+>>]<<<<<<<+>>>>>+[-[->>+>+<<<]>>>]<<]<<[<<<[>>>[-]<<<<<<]]>>>[-<<+>>]<<<<<<<[->+<<<<<<<<<<<<<<<<<<<+>>>>>>>>>>>>>>>>>>]>[-<+>]>>>>+[-[->>+>+<<<]>>>]<<[-]<<[<<<[>>>[-]<<<<<<]]>>>[-<<+>>]<<<<<<<[->>>>>+[-[->>+>+<<<]>>>]<<+<<[<<<[>>>[-]<<<<<<]]>>>[-<<+>>]<<<<<<<]>>>>>[-<<<<<<<<<<<<<<<<<<<<<<+>>>>>>>>>>>>>>>>>>>>>>]<<<<<<<<<<<<<<<<<<<<<<-------------------------------->>>>>>>>>>>>>>>>>+[-<<<<<<<<<<+>>>>>>>>>>]<[->>>>>>+<<<<<<]>>>>>>+[-[->>+>+<<<]>>>]<<[-]+++++++++++++++++++++++++++++++++++<<[<<<[>>>[-]<<<<<<]]>>>[-<<+>>]<<[-<<<<<<+>>>>>>]<<<<<<+<<<++++++++++++++++++++++++++++++++++++++++<+++++++++++++++++++++++++++++++++++++++++++++++++++++++>>>]<<<-[->>>+<+<<]>>>[-<<<+>>>]+<[[-]>-<]>[-<<<<<<<<<<<<<<<[-]>>>>>>>[->>>>>>>>>>+<<<<<<<<<<<<<<<<<+>>>>>>>]>>>>>>>>>>[-<<<<<<<<<<+>>>>>>>>>>]<<<<<<<<<<<<<<<<<<[-]>>>>>>>[->>>>>>>>>>>+<<<<<<<<<<<<<<<<<<+>>>>>>>]>>>>>>>>>>>[-<<<<<<<<<<<+>>>>>>>>>>>]<<<<++++++++++++++++++++++++++<+++++++++++++++++++++++++++++++++++++++++++++++++++++++>>>]<<<-[->>>+<+<<]>>>[-<<<+>>>]+<[[-]>-<]>[-<<<<<<<<<<<<.>>>>>>>>>>++++++++++++++++++++++++++<+++++++++++++++++++++++++++++++++++++++++++++++++++++++>>>]<<<-[->>>+<+<<]>>>[-<<<+>>>]+<[[-]>-<]>[-<<+++++++++++++++++++++++++++++++++++++++<+++++++++++++++++++++++++++++++++++++++++++++++++++++++>>>]<<<-[->>>+<+<<]>>>[-<<<+>>>]+<[[-]>-<]>[->>+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.[-]++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.[-]++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.[-]<<<<+++++++++++++++++++++++++++++++++++++++<+++++++++++++++++++++++++++++++++++++++++++++++++++++++>>>]<<<-[->>>+<+<<]>>>[-<<<+>>>]+<[[-]>-<]>[->-<<<[-]>>>[->>>>>>+<<<<<<]>>>>>>+[-[->>+>+<<<]>>>]<<[-<<[<<<[>>>[-]<<<<<<]]>>>[-<<+>>]<<<<<<<+>>>>>+[-[->>+>+<<<]>>>]<<]<<[<<<[>>>[-]<<<<<<]]>>>[-<<+>>]<<<<<<<[->+<<<<<+>>>>]>[-<+>]>>>>+[-[->>+>+<<<]>>>]<<[-]<<[<<<[>>>[-]<<<<<<]]>>>[-<<+>>]<<<<<<<[->>>>>+[-[->>+>+<<<]>>>]<<+<<[<<<[>>>[-]<<<<<<]]>>>[-<<+>>]<<<<<<<]>>>>>[-<<<<<<+>>>>>>]<<<<<<<<<<+++++++++++++++++++++++++++++++++++++++++++++++++++++++>>>]<<<-[->>>+<+<<]>>>[-<<<+>>>]+<[[-]>-<]>[-<<<<<<<<<<<<<[-]<<<[->>>>>>>>>>>>>>>>>>+<<<<<<<<<<<<<<<+<<<]>>>>>>>>>>>>>>>>>>[-<<<<<<<<<<<<<<<<<<+>>>>>>>>>>>>>>>>>>]<<<<<<<<<<<<[-]>>>>>>>>+++++++++++++++++++++++++++++++++++++++++<+++++++++++++++++++++++++++++++++++++++++++++++++++++++>>>]<<<-[->>>+<+<<]>>>[-<<<+>>>]+<[[-]>-<]>[-<<<<<<<<<<<<[-]++++++++++<<<<[-]>[-]>>>>>>>>[-]<<<<<<[->>>>>>>>>>>>>>>+<<<<<<<<<+<<<<<<]>>>>>>>>>>>>>>>[-<<<<<<<<<<<<<<<+>>>>>>>>>>>>>>>]<<<<<<<<[-]<<<<<<[->>>>>>>>>>>>>>+<<<<<<<<+<<<<<<]>>>>>>>>>>>>>>[-<<<<<<<<<<<<<<+>>>>>>>>>>>>>>]<<<<<<<<<[->>>>>>>>>>+<+<<<<<<<<<]>>>>>>>>>>[-<<<<<<<<<<+>>>>>>>>>>]+<[<<<<++++++++++++++++++++++++++++++++++++++++++>>>>[-]>-<]>[<<<<<+++++++++++++++++++++++++++++++++++++++++++++++++>>>>>-]<<<<<<+++++++++++++++++++++++++++++++++++++++++++++++++++++++>>>]<<<-[->>>+<+<<]>>>[-<<<+>>>]+<[[-]>-<]>[-<<<<<<[->>>>>>>>>+<+<<<<<<<<]>>>>>>>>>[-<<<<<<<<<+>>>>>>>>>]+<[<<<<+++++++++++++++++++++++++++++++++++++++++++>>>>[-]>-<]>[<<<<<+++++++++++++++++++++++++++++++++++++++++++++++++>>>>>-]<<<<<<+++++++++++++++++++++++++++++++++++++++++++++++++++++++>>>]<<<-[->>>+<+<<]>>>[-<<<+>>>]+<[[-]>-<]>[->>+[-<<<<<<<<<+>>>>>>>>>]<<<<++++++++++++++++++++++++++++++++++++++++++++<+++++++++++++++++++++++++++++++++++++++++++++++++++++++>>>]<<<-[->>>+<+<<]>>>[-<<<+>>>]+<[[-]>-<]>[-<<<<<<<<<<<<<<<[-]>>>>>>>>>[->>>>>>>>+<<<<<<<<<<<<<<<<<+>>>>>>>>>]>>>>>>>>[-<<<<<<<<+>>>>>>>>]<<<<+++++++++++++++++++++++++++++++++++++++++++++<+++++++++++++++++++++++++++++++++++++++++++++++++++++++>>>]<<<-[->>>+<+<<]>>>[-<<<+>>>]+<[[-]>-<]>[->>+[-<<<<<<<<<<<<<<<<<->>>>>>>>>>>>>>>>>]+[-<<<<<<<<<->>>>>>>>>]<<<<<<<<<[->>>>>>>>>>+<+<<<<<<<<<]>>>>>>>>>>[-<<<<<<<<<<+>>>>>>>>>>]+<[<<<<++++++++++++++++++++++++++++++++++++++++++++++>>>>[-]>-<]>[<<<<<++++++++++++++++++++++++++++++++++++++++++++++++>>>>>-]<<<<<<+++++++++++++++++++++++++++++++++++++++++++++++++++++++>>>]<<<-[->>>+<+<<]>>>[-<<<+>>>]+<[[-]>-<]>[-<<<<<<<<<<<<<<<[->>>>>>>>>>>>>>>>>>+<+<<<<<<<<<<<<<<<<<]>>>>>>>>>>>>>>>>>>[-<<<<<<<<<<<<<<<<<<+>>>>>>>>>>>>>>>>>>]+<[<<<<+++++++++++++++++++++++++++++++++++++++++++++>>>>[-]>-<]>[<<<<<+++++++++++++++++++++++++++++++++++++++++++++++>>>>>-]<<<<<<+++++++++++++++++++++++++++++++++++++++++++++++++++++++>>>]<<<-[->>>+<+<<]>>>[-<<<+>>>]+<[[-]>-<]>[->>+[-<<<<<<<<<<<<<<<<<<+>>>>>>>>>>>>>>>>>>]<<<<++++++++++++++++++++++++++++++++++++++++++++<+++++++++++++++++++++++++++++++++++++++++++++++++++++++>>>]<<<-[->>>+<+<<]>>>[-<<<+>>>]+<[[-]>-<]>[->>+[-<<<<<<<<->>>>>>>>]<<<<<<<<<<<<<<<<<[->>>>>>>>>>>>>>>>>>+<+<<<<<<<<<<<<<<<<<]>>>>>>>>>>>>>>>>>>[-<<<<<<<<<<<<<<<<<<+>>>>>>>>>>>>>>>>>>]<[-<<<<<<<<->>>>>>>>]<<<<<<<<<<<<<<<<<[-]>>>>>>>>>[->>>>>>>>+<<<<<<<<<<<<<<<<<+>>>>>>>>>]>>>>>>>>[-<<<<<<<<+>>>>>>>>]<<<<+++++++++++++++++++++++++++++++++++++++++++++++++<+++++++++++++++++++++++++++++++++++++++++++++++++++++++>>>]<<<-[->>>+<+<<]>>>[-<<<+>>>]+<[[-]>-<]>[->>++++++++++++++++++++++++++++++++++++++++++++++++[-<<<<<<<<<<<<<<<<<+>>>>>>>>>>>>>>>>>]<[->>>>>>+<<<<<<]<<<<<<<<<<<<<<<<[->>>>>>>>>>>>>>>>>>+<+<<<<<<<<<<<<<<<<<]>>>>>>>>>>>>>>>>>>[-<<<<<<<<<<<<<<<<<<+>>>>>>>>>>>>>>>>>>]>>>>+[-[->>+>+<<<]>>>]<<[-]<<[<<<[>>>[-]<<<<<<]]>>>[-<<+>>]<<<<<<<[->>>>>+[-[->>+>+<<<]>>>]<<+<<[<<<[>>>[-]<<<<<<]]>>>[-<<+>>]<<<<<<<]>>>>>[-<<<<<<+>>>>>>]<<<<<<+>+[-<<<<<<<<<<<<+>>>>>>>>>>>>]<<<<<<<<<<<<<<<[-]<<<[->>>>>>>>>>>>>>>>>>+<<<<<<<<<<<<<<<+<<<]>>>>>>>>>>>>>>>>>>[-<<<<<<<<<<<<<<<<<<+>>>>>>>>>>>>>>>>>>]<<<<<<<<<<<<<<<[->>>>>>>>>>>>>>>>+<+<<<<<<<<<<<<<<<]>>>>>>>>>>>>>>>>[-<<<<<<<<<<<<<<<<+>>>>>>>>>>>>>>>>]+<[<<<<+++++++++++++++++++++++++++++++++++++++++>>>>[-]>-<]>[<<<<<++++++++++++++++++++++++++++++++++++++++++++++++++>>>>>-]<<<<<<+++++++++++++++++++++++++++++++++++++++++++++++++++++++>>>]<<<-[->>>+<+<<]>>>[-<<<+>>>]+<[[-]>-<]>[-<<<<<<<<<<[->>>>>>>>>>>>>+<+<<<<<<<<<<<<]>>>>>>>>>>>>>[-<<<<<<<<<<<<<+>>>>>>>>>>>>>]+<[<<<<+++++++++++++++++++++++++++++++++++++++++++++++++++>>>>[-]>-<]>[<<<<<++++++++++++++++++++++++++++++++++++++++++++++++++++>>>>>-]<<<<<<+++++++++++++++++++++++++++++++++++++++++++++++++++++++>>>]<<<-[->>>+<+<<]>>>[-<<<+>>>]+<[[-]>-<]>[->>+[-<<<<<<<<<<<<->>>>>>>>>>>>]<-<<<<<<<<<<<<<<[-]>>>>>>>>>>>>>>[->>>>>>+<<<<<<]>>>>>>+[-[->>+>+<<<]>>>]<<[-<<[<<<[>>>[-]<<<<<<]]>>>[-<<+>>]<<<<<<<+>>>>>+[-[->>+>+<<<]>>>]<<]<<[<<<[>>>[-]<<<<<<]]>>>[-<<+>>]<<<<<<<[->+<<<<<<<<<<<<<<<<+>>>>>>>>>>>>>>>]>[-<+>]>>>>+[-[->>+>+<<<]>>>]<<[-]<<[<<<[>>>[-]<<<<<<]]>>>[-<<+>>]<<<<<<<[->>>>>+[-[->>+>+<<<]>>>]<<+<<[<<<[>>>[-]<<<<<<]]>>>[-<<+>>]<<<<<<<]>>>>>[-<<<<<<+>>>>>>]<<<<<<<<<<<<<<<<<<<<.>>>>>>>>>>>++++++++++++++++++++++++++++++++++++++++++++++++++<+++++++++++++++++++++++++++++++++++++++++++++++++++++++>>>]<<<-[->>>+<+<<]>>>[-<<<+>>>]+<[[-]>-<]>[->-<<<[-]>>>[->>>>>>+<<<<<<]>>>>>>+[-[->>+>+<<<]>>>]<<[-<<[<<<[>>>[-]<<<<<<]]>>>[-<<+>>]<<<<<<<+>>>>>+[-[->>+>+<<<]>>>]<<]<<[<<<[>>>[-]<<<<<<]]>>>[-<<+>>]<<<<<<<[->+<<<<<+>>>>]>[-<+>]>>>>+[-[->>+>+<<<]>>>]<<[-]<<[<<<[>>>[-]<<<<<<]]>>>[-<<+>>]<<<<<<<[->>>>>+[-[->>+>+<<<]>>>]<<+<<[<<<[>>>[-]<<<<<<]]>>>[-<<+>>]<<<<<<<]>>>>>[-<<<<<<+>>>>>>]<<<<<<<<<<+++++++++++++++++++++++++++++++++++++++++++++++++++++++>>>]<<<-[->>>+<+<<]>>>[-<<<+>>>]+<[[-]>-<]>[-<<+++++++++++++++++++++++++++++++++++++++++++++++++++++<[-]>>>]<<<]
Why not? :)