├── README.md ├── LICENSE.md ├── Brainfuck.cpp ├── BfBf.cpp └── BfBf.bf /README.md: -------------------------------------------------------------------------------- 1 | # BfBf 2 | 3 | A Brainfuck interpreter written by Brainfuck. 4 | 5 | 6 | ## License 7 | 8 | [MIT License](/LICENSE.md) 9 | -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | # MIT License 2 | 3 | Copyright (c) 2018 SuperSodaSea 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /Brainfuck.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * MIT License 4 | * 5 | * Copyright (c) 2018 BfBf 6 | * 7 | * Permission is hereby granted, free of charge, to any person obtaining a copy 8 | * of this software and associated documentation files (the "Software"), to deal 9 | * in the Software without restriction, including without limitation the rights 10 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 11 | * copies of the Software, and to permit persons to whom the Software is 12 | * furnished to do so, subject to the following conditions: 13 | * 14 | * The above copyright notice and this permission notice shall be included in all 15 | * copies or substantial portions of the Software. 16 | * 17 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 18 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 19 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 20 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 21 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 22 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 23 | * SOFTWARE. 24 | * 25 | */ 26 | 27 | #include 28 | #include 29 | 30 | 31 | enum Op { 32 | ADD = 1, 33 | INPUT = 2, 34 | SUB = 3, 35 | OUTPUT = 4, 36 | LEFT = 5, 37 | RIGHT = 6, 38 | BEGIN = 7, 39 | END = 8, 40 | }; 41 | 42 | 43 | std::uint8_t memory[65536]; 44 | 45 | int main() { 46 | 47 | std::uint16_t codePointer = 0, dataPointer = 0; 48 | for(char c; (c = std::getchar()) != EOF; ) { 49 | 50 | switch(c) { 51 | case '+': memory[dataPointer++] = ADD; break; 52 | case ',': memory[dataPointer++] = INPUT; break; 53 | case '-': memory[dataPointer++] = SUB; break; 54 | case '.': memory[dataPointer++] = OUTPUT; break; 55 | case '<': memory[dataPointer++] = LEFT; break; 56 | case '>': memory[dataPointer++] = RIGHT; break; 57 | case '[': memory[dataPointer++] = BEGIN; break; 58 | case ']': memory[dataPointer++] = END; break; 59 | } 60 | 61 | } 62 | memory[dataPointer++] = 0; 63 | for(std::uint8_t code; (code = memory[codePointer]); ++codePointer) { 64 | 65 | switch(code) { 66 | // + 67 | case ADD: ++memory[dataPointer]; break; 68 | // , 69 | case INPUT: { char c = std::getchar(); memory[dataPointer] = c == EOF ? 0 : c; break; } 70 | // - 71 | case SUB: --memory[dataPointer]; break; 72 | // . 73 | case OUTPUT: std::putchar(memory[dataPointer]); break; 74 | // < 75 | case LEFT: --dataPointer; break; 76 | // > 77 | case RIGHT: ++dataPointer; break; 78 | // [ 79 | case BEGIN: { 80 | 81 | if(!memory[dataPointer]) { 82 | 83 | std::uint16_t level = 1; 84 | while(level) { 85 | 86 | ++codePointer; 87 | code = memory[codePointer]; 88 | if(code == 7) ++level; 89 | else if(code == 8) --level; 90 | 91 | } 92 | 93 | } 94 | break; 95 | 96 | } 97 | // ] 98 | case END: { 99 | 100 | if(memory[dataPointer]) { 101 | 102 | std::uint16_t level = 1; 103 | while(level) { 104 | 105 | --codePointer; 106 | code = memory[codePointer]; 107 | if(code == 7) --level; 108 | else if(code == 8) ++level; 109 | 110 | } 111 | 112 | } 113 | break; 114 | 115 | } 116 | } 117 | 118 | } 119 | return 0; 120 | 121 | } 122 | -------------------------------------------------------------------------------- /BfBf.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * MIT License 4 | * 5 | * Copyright (c) 2018 BfBf 6 | * 7 | * Permission is hereby granted, free of charge, to any person obtaining a copy 8 | * of this software and associated documentation files (the "Software"), to deal 9 | * in the Software without restriction, including without limitation the rights 10 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 11 | * copies of the Software, and to permit persons to whom the Software is 12 | * furnished to do so, subject to the following conditions: 13 | * 14 | * The above copyright notice and this permission notice shall be included in all 15 | * copies or substantial portions of the Software. 16 | * 17 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 18 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 19 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 20 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 21 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 22 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 23 | * SOFTWARE. 24 | * 25 | */ 26 | 27 | #include 28 | #include 29 | #include 30 | #include 31 | 32 | 33 | inline std::string concat(const std::vector& arr) { 34 | 35 | std::string ret; 36 | for(auto&& s : arr) ret += s; 37 | return ret; 38 | 39 | } 40 | 41 | class Generator { 42 | 43 | public: 44 | 45 | using Type = std::uint16_t; 46 | 47 | private: 48 | 49 | Type position = 0; 50 | Type current = 0; 51 | 52 | public: 53 | 54 | Type allocate(Type count = 1) { auto ret = position; position += count; return ret; } 55 | Type getCurrent() { return current; } 56 | 57 | std::string go(Type a) { 58 | 59 | std::string ret; 60 | if(current <= a) ret = std::string(a - current, '>'); 61 | else ret = std::string(current - a, '<'); 62 | current = a; 63 | return ret; 64 | 65 | } 66 | std::string zero(Type a) { return go(a) + "[-]"; } 67 | std::string inc(Type a) { return go(a) + '+'; } 68 | std::string dec(Type a) { return go(a) + '-'; } 69 | std::string add(Type a, std::uint8_t value) { return go(a) + std::string(value, '+'); } 70 | std::string sub(Type a, std::uint8_t value) { return go(a) + std::string(value, '-'); } 71 | std::string set(Type a, std::uint8_t value) { return zero(a) + std::string(value, '+'); } 72 | std::string input(Type a) { return go(a) + ","; } 73 | std::string output(Type a) { return go(a) + "."; } 74 | std::string move(Type a, Type b) { 75 | 76 | return concat({zero(b), go(a), "[", go(b), "+", go(a), "-]"}); 77 | 78 | } 79 | std::string assign(Type a, Type b, Type t) { 80 | 81 | return concat({ 82 | zero(b), zero(t), 83 | move(a, t), 84 | go(t), "[", go(a), "+", go(b), "+", go(t), "-]", 85 | }); 86 | 87 | } 88 | 89 | template 90 | std::string loop(F1&& f1, F2&& f2) { 91 | 92 | return concat({f1(), "[", f2(), f1(), "]"}); 93 | 94 | } 95 | template 96 | std::string cond(Type a, Type t, F1&& f1) { 97 | 98 | return concat({ 99 | assign(a, t, t + 1), 100 | go(t), "[", f1(), zero(t), "]", 101 | }); 102 | 103 | } 104 | template 105 | std::string cond(Type a, Type t, F1&& f1, F2&& f2) { 106 | 107 | return concat({ 108 | set(t, 1), zero(t + 1), 109 | go(a), "[", f1(), zero(t), move(a, t + 1), "]", 110 | move(t + 1, a), 111 | go(t), "[", f2(), zero(t), "]", 112 | }); 113 | 114 | } 115 | 116 | std::string zero16(Type a) { 117 | 118 | return concat({zero(a), zero(a + 1)}); 119 | 120 | } 121 | std::string move16(Type a, Type b) { 122 | 123 | return concat({move(a, b), move(a + 1, b + 1)}); 124 | 125 | } 126 | std::string assign16(Type a, Type b, Type t) { 127 | 128 | return concat({assign(a, b, t), assign(a + 1, b + 1, t)}); 129 | 130 | } 131 | std::string inc16(Type a, Type t) { 132 | 133 | return concat({ 134 | inc(a), 135 | cond(a, t, [] { return ""; }, [=] { return inc(a + 1); }), 136 | }); 137 | 138 | } 139 | std::string dec16(Type a, Type t) { 140 | 141 | return concat({ 142 | cond(a, t, [] { return ""; }, [=] { return dec(a + 1); }), 143 | dec(a), 144 | }); 145 | 146 | } 147 | std::string notZero16(Type a, Type b, Type t) { 148 | 149 | return concat({ 150 | zero(b), 151 | cond(a, t, [=] { return inc(b); }), 152 | cond(a + 1, t, [=] { return inc(b); }), 153 | go(b), 154 | }); 155 | 156 | } 157 | // | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 158 | // | index1 | index2 | data | tmp | 159 | std::string readArray16(Type array, Type index, Type data) { 160 | 161 | return concat({ 162 | assign16(index, array, array + 2), assign16(array, array + 2, array + 4), 163 | loop([&] { return notZero16(array, array + 5, array + 6); }, [&] { return concat({ 164 | dec16(array, array + 5), 165 | move(array + 3, array + 4), move(array + 2, array + 3), move(array + 1, array + 2), move(array, array + 1), 166 | move(array + 8, array), 167 | ">", 168 | }); }), 169 | assign(array + 8, array + 4, array + 5), 170 | loop([&] { return notZero16(array + 2, array + 5, array + 6); }, [&] { return concat({ 171 | dec16(array + 2, array + 5), 172 | move(array + 2, array + 1), move(array + 3, array + 2), move(array + 4, array + 3), 173 | "<", 174 | move(array, array + 8), 175 | }); }), 176 | assign(array + 4, data, array), 177 | }); 178 | 179 | } 180 | std::string writeArray16(Type array, Type index, Type data) { 181 | 182 | return concat({ 183 | assign16(index, array, array + 2), assign16(array, array + 2, array + 4), assign(data, array + 4, array + 5), 184 | loop([&] { return notZero16(array, array + 5, array + 6); }, [&] { return concat({ 185 | dec16(array, array + 5), 186 | move(array + 4, array + 5), move(array + 3, array + 4), move(array + 2, array + 3), move(array + 1, array + 2), move(array, array + 1), 187 | move(array + 8, array), 188 | ">", 189 | }); }), 190 | assign(array + 4, array + 8, array + 5), 191 | loop([&] { return notZero16(array + 2, array + 5, array + 6); }, [&] { return concat({ 192 | dec16(array + 2, array + 5), 193 | move(array + 2, array + 1), move(array + 3, array + 2), 194 | "<", 195 | move(array, array + 8), 196 | }); }), 197 | }); 198 | 199 | } 200 | 201 | }; 202 | 203 | 204 | int main() { 205 | 206 | Generator g; 207 | 208 | auto codePointer = g.allocate(2); 209 | auto dataPointer = g.allocate(2); 210 | auto buffer = g.allocate(); 211 | auto level = g.allocate(); 212 | auto t = g.allocate(2); 213 | auto data = g.allocate(); 214 | 215 | auto str = concat({ 216 | g.zero16(codePointer), g.zero16(dataPointer), 217 | g.loop([&] { return g.input(buffer); }, [&] { return concat({ 218 | g.sub(buffer, '+'), g.cond(buffer, t, [&] { return concat({ 219 | g.sub(buffer, ',' - '+'), g.cond(buffer, t, [&] { return concat({ 220 | g.sub(buffer, '-' - ','), g.cond(buffer, t, [&] { return concat({ 221 | g.sub(buffer, '.' - '-'), g.cond(buffer, t, [&] { return concat({ 222 | g.sub(buffer, '<' - '.'), g.cond(buffer, t, [&] { return concat({ 223 | g.sub(buffer, '>' - '<'), g.cond(buffer, t, [&] { return concat({ 224 | g.sub(buffer, '[' - '>'), g.cond(buffer, t, [&] { return concat({ 225 | g.sub(buffer, ']' - '['), g.cond(buffer, t, [&] { return ""; }, 226 | [&] { return concat({g.set(buffer, 8), g.writeArray16(data, dataPointer, buffer), g.inc16(dataPointer, t)}); }), 227 | }); }, [&] { return concat({g.set(buffer, 7), g.writeArray16(data, dataPointer, buffer), g.inc16(dataPointer, t)}); }), 228 | }); }, [&] { return concat({g.set(buffer, 6), g.writeArray16(data, dataPointer, buffer), g.inc16(dataPointer, t)}); }), 229 | }); }, [&] { return concat({g.set(buffer, 5), g.writeArray16(data, dataPointer, buffer), g.inc16(dataPointer, t)}); }), 230 | }); }, [&] { return concat({g.set(buffer, 4), g.writeArray16(data, dataPointer, buffer), g.inc16(dataPointer, t)}); }), 231 | }); }, [&] { return concat({g.set(buffer, 3), g.writeArray16(data, dataPointer, buffer), g.inc16(dataPointer, t)}); }), 232 | }); }, [&] { return concat({g.set(buffer, 2), g.writeArray16(data, dataPointer, buffer), g.inc16(dataPointer, t)}); }), 233 | }); }, [&] { return concat({g.set(buffer, 1), g.writeArray16(data, dataPointer, buffer), g.inc16(dataPointer, t)}); }), 234 | }); }), 235 | g.zero(buffer), g.writeArray16(data, dataPointer, buffer), g.inc16(dataPointer, t), 236 | g.loop([&] { return concat({g.readArray16(data, codePointer, buffer), g.go(buffer)}); }, [&] { return concat({ 237 | g.dec(buffer), g.cond(buffer, t, [&] { return concat({ 238 | g.dec(buffer), g.cond(buffer, t, [&] { return concat({ 239 | g.dec(buffer), g.cond(buffer, t, [&] { return concat({ 240 | g.dec(buffer), g.cond(buffer, t, [&] { return concat({ 241 | g.dec(buffer), g.cond(buffer, t, [&] { return concat({ 242 | g.dec(buffer), g.cond(buffer, t, [&] { return concat({ 243 | g.dec(buffer), g.cond(buffer, t, [&] { return concat({ 244 | g.dec(buffer), g.cond(buffer, t, [&] { return ""; }, [&] { return concat({ 245 | // ] 246 | g.readArray16(data, dataPointer, buffer), 247 | g.cond(buffer, t, [&] { return concat({ 248 | g.set(level, 1), 249 | g.loop([&] { return g.go(level); }, [&] { return concat({ 250 | g.dec16(codePointer, t), g.readArray16(data, codePointer, buffer), 251 | g.sub(buffer, 7), g.cond(buffer, t, [&] { return concat({ 252 | g.dec(buffer), g.cond(buffer, t, [&] { return ""; }, [&] { return g.inc(level); }), 253 | }); }, [&] { return g.dec(level); }), 254 | }); }), 255 | }); }, [] { return ""; }), 256 | }); }), 257 | }); }, [&] { return concat({ 258 | // [ 259 | g.readArray16(data, dataPointer, buffer), 260 | g.cond(buffer, t, [] { return ""; }, [&] { return concat({ 261 | g.set(level, 1), 262 | g.loop([&] { return g.go(level); }, [&] { return concat({ 263 | g.inc16(codePointer, t), g.readArray16(data, codePointer, buffer), 264 | g.sub(buffer, 7), g.cond(buffer, t, [&] { return concat({ 265 | g.dec(buffer), g.cond(buffer, t, [&] { return ""; }, [&] { return g.dec(level); }), 266 | }); }, [&] { return g.inc(level); }), 267 | }); }), 268 | }); }), 269 | }); }), 270 | }); }, [&] { return concat({ 271 | // > 272 | g.inc16(dataPointer, t), 273 | }); }), 274 | }); }, [&] { return concat({ 275 | // < 276 | g.dec16(dataPointer, t), 277 | }); }), 278 | }); }, [&] { return concat({ 279 | // . 280 | g.readArray16(data, dataPointer, buffer), g.output(buffer), 281 | }); }), 282 | }); }, [&] { return concat({ 283 | // - 284 | g.readArray16(data, dataPointer, buffer), g.dec(buffer), g.writeArray16(data, dataPointer, buffer), 285 | }); }), 286 | }); }, [&] { return concat({ 287 | // , 288 | g.input(buffer), g.writeArray16(data, dataPointer, buffer), 289 | }); }), 290 | }); }, [&] { return concat({ 291 | // + 292 | g.readArray16(data, dataPointer, buffer), g.inc(buffer), g.writeArray16(data, dataPointer, buffer), 293 | }); }), 294 | g.inc16(codePointer, t), 295 | }); }), 296 | }); 297 | 298 | constexpr std::size_t LINE = 100; 299 | for(std::size_t i = 0; i < str.size() / LINE; ++i) 300 | std::cout << str.substr(i * LINE, LINE) << '\n'; 301 | if(str.size() % LINE) std::cout << str.substr(str.size() / LINE * LINE) << '\n'; 302 | 303 | } 304 | -------------------------------------------------------------------------------- /BfBf.bf: -------------------------------------------------------------------------------- 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 | >>-]<[<<[-]++++>>>>[-]>>[-][-]<<<<<<<<[>>>>>>>>+<<<<<<<<-]>>>>>>>>[<<<<<<<<+>>>>>>+>>-]<[-]>[-][-]<< 57 | <<<<<[>>>>>>>+<<<<<<<-]>>>>>>>[<<<<<<<+>>>>>>+>-][-]>>[-][-]<<<<[>>>>+<<<<-]>>>>[<<<<+>>+>>-]<[-]>[- 58 | ][-]<<<[>>>+<<<-]>>>[<<<+>>+>-][-]>[-][-]<<<<<<<<<[>>>>>>>>>+<<<<<<<<<-]>>>>>>>>>[<<<<<<<<<+>>>>>>>> 59 | +>-][-]>[-]>[-][-]<<<<<<<[>>>>>>>+<<<<<<<-]>>>>>>>[<<<<<<<+>>>>>>+>-]<[<+>[-]][-]>[-][-]<<<<<<[>>>>> 60 | >+<<<<<<-]>>>>>>[<<<<<<+>>>>>+>-]<[<+>[-]]<[[-]+>[-]<<<<<<[>>>>>[-]>[-]<<<<<<[>>>>>>+<<<<<<-]][-]>>> 61 | >>>[<<<<<<+>>>>>>-]<[<<<<->>>>[-]]<<<<<->>>>>[-]<[>+<-][-]<[>+<-][-]<[>+<-][-]<[>+<-][-]<[>+<-][-]>> 62 | >>>>>>[<<<<<<<<+>>>>>>>>-]><<<[-]>[-]>[-][-]<<<<<<<[>>>>>>>+<<<<<<<-]>>>>>>>[<<<<<<<+>>>>>>+>-]<[<+> 63 | [-]][-]>[-][-]<<<<<<[>>>>>>+<<<<<<-]>>>>>>[<<<<<<+>>>>>+>-]<[<+>[-]]<]>>>[-]<<<[-][-]<[>+<-]>[<+>>>> 64 | +<<<-][-]>[-]>[-][-]<<<<<[>>>>>+<<<<<-]>>>>>[<<<<<+>>>>+>-]<[<+>[-]][-]>[-][-]<<<<[>>>>+<<<<-]>>>>[< 65 | <<<+>>>+>-]<[<+>[-]]<[[-]+>[-]<<<<[>>>[-]>[-]<<<<[>>>>+<<<<-]][-]>>>>[<<<<+>>>>-]<[<<->>[-]]<<<-<[-] 66 | >[<+>-][-]>[<+>-]<>>>>>[-]<<<<<<<<[>>>>>>>>+<<<<<<<<-]>>>>>[-]>[-]>[-][-]<<<<<[>>>>>+<<<<<-]>>>>>[<< 67 | <<<+>>>>+>-]<[<+>[-]][-]>[-][-]<<<<[>>>>+<<<<-]>>>>[<<<<+>>>+>-]<[<+>[-]]<]<<<<<<<<<<<+>>>>[-]+>[-]< 68 | <<<<[>>>>[-]>[-]<<<<<[>>>>>+<<<<<-]][-]>>>>>[<<<<<+>>>>>-]<[<<<+>>>[-]][-]][-]>[-]<<<[>>>+<<<-]][-]> 69 | >>[<<<+>>>-]<[<<[-]+++>>>>[-]>>[-][-]<<<<<<<<[>>>>>>>>+<<<<<<<<-]>>>>>>>>[<<<<<<<<+>>>>>>+>>-]<[-]>[ 70 | -][-]<<<<<<<[>>>>>>>+<<<<<<<-]>>>>>>>[<<<<<<<+>>>>>>+>-][-]>>[-][-]<<<<[>>>>+<<<<-]>>>>[<<<<+>>+>>-] 71 | <[-]>[-][-]<<<[>>>+<<<-]>>>[<<<+>>+>-][-]>[-][-]<<<<<<<<<[>>>>>>>>>+<<<<<<<<<-]>>>>>>>>>[<<<<<<<<<+> 72 | >>>>>>>+>-][-]>[-]>[-][-]<<<<<<<[>>>>>>>+<<<<<<<-]>>>>>>>[<<<<<<<+>>>>>>+>-]<[<+>[-]][-]>[-][-]<<<<< 73 | <[>>>>>>+<<<<<<-]>>>>>>[<<<<<<+>>>>>+>-]<[<+>[-]]<[[-]+>[-]<<<<<<[>>>>>[-]>[-]<<<<<<[>>>>>>+<<<<<<-] 74 | ][-]>>>>>>[<<<<<<+>>>>>>-]<[<<<<->>>>[-]]<<<<<->>>>>[-]<[>+<-][-]<[>+<-][-]<[>+<-][-]<[>+<-][-]<[>+< 75 | -][-]>>>>>>>>[<<<<<<<<+>>>>>>>>-]><<<[-]>[-]>[-][-]<<<<<<<[>>>>>>>+<<<<<<<-]>>>>>>>[<<<<<<<+>>>>>>+> 76 | -]<[<+>[-]][-]>[-][-]<<<<<<[>>>>>>+<<<<<<-]>>>>>>[<<<<<<+>>>>>+>-]<[<+>[-]]<]>>>[-]<<<[-][-]<[>+<-]> 77 | [<+>>>>+<<<-][-]>[-]>[-][-]<<<<<[>>>>>+<<<<<-]>>>>>[<<<<<+>>>>+>-]<[<+>[-]][-]>[-][-]<<<<[>>>>+<<<<- 78 | ]>>>>[<<<<+>>>+>-]<[<+>[-]]<[[-]+>[-]<<<<[>>>[-]>[-]<<<<[>>>>+<<<<-]][-]>>>>[<<<<+>>>>-]<[<<->>[-]]< 79 | <<-<[-]>[<+>-][-]>[<+>-]<>>>>>[-]<<<<<<<<[>>>>>>>>+<<<<<<<<-]>>>>>[-]>[-]>[-][-]<<<<<[>>>>>+<<<<<-]> 80 | >>>>[<<<<<+>>>>+>-]<[<+>[-]][-]>[-][-]<<<<[>>>>+<<<<-]>>>>[<<<<+>>>+>-]<[<+>[-]]<]<<<<<<<<<<<+>>>>[- 81 | ]+>[-]<<<<<[>>>>[-]>[-]<<<<<[>>>>>+<<<<<-]][-]>>>>>[<<<<<+>>>>>-]<[<<<+>>>[-]][-]][-]>[-]<<<[>>>+<<< 82 | -]][-]>>>[<<<+>>>-]<[<<[-]++>>>>[-]>>[-][-]<<<<<<<<[>>>>>>>>+<<<<<<<<-]>>>>>>>>[<<<<<<<<+>>>>>>+>>-] 83 | <[-]>[-][-]<<<<<<<[>>>>>>>+<<<<<<<-]>>>>>>>[<<<<<<<+>>>>>>+>-][-]>>[-][-]<<<<[>>>>+<<<<-]>>>>[<<<<+> 84 | >+>>-]<[-]>[-][-]<<<[>>>+<<<-]>>>[<<<+>>+>-][-]>[-][-]<<<<<<<<<[>>>>>>>>>+<<<<<<<<<-]>>>>>>>>>[<<<<< 85 | <<<<+>>>>>>>>+>-][-]>[-]>[-][-]<<<<<<<[>>>>>>>+<<<<<<<-]>>>>>>>[<<<<<<<+>>>>>>+>-]<[<+>[-]][-]>[-][- 86 | ]<<<<<<[>>>>>>+<<<<<<-]>>>>>>[<<<<<<+>>>>>+>-]<[<+>[-]]<[[-]+>[-]<<<<<<[>>>>>[-]>[-]<<<<<<[>>>>>>+<< 87 | <<<<-]][-]>>>>>>[<<<<<<+>>>>>>-]<[<<<<->>>>[-]]<<<<<->>>>>[-]<[>+<-][-]<[>+<-][-]<[>+<-][-]<[>+<-][- 88 | ]<[>+<-][-]>>>>>>>>[<<<<<<<<+>>>>>>>>-]><<<[-]>[-]>[-][-]<<<<<<<[>>>>>>>+<<<<<<<-]>>>>>>>[<<<<<<<+>> 89 | >>>>+>-]<[<+>[-]][-]>[-][-]<<<<<<[>>>>>>+<<<<<<-]>>>>>>[<<<<<<+>>>>>+>-]<[<+>[-]]<]>>>[-]<<<[-][-]<[ 90 | >+<-]>[<+>>>>+<<<-][-]>[-]>[-][-]<<<<<[>>>>>+<<<<<-]>>>>>[<<<<<+>>>>+>-]<[<+>[-]][-]>[-][-]<<<<[>>>> 91 | +<<<<-]>>>>[<<<<+>>>+>-]<[<+>[-]]<[[-]+>[-]<<<<[>>>[-]>[-]<<<<[>>>>+<<<<-]][-]>>>>[<<<<+>>>>-]<[<<-> 92 | >[-]]<<<-<[-]>[<+>-][-]>[<+>-]<>>>>>[-]<<<<<<<<[>>>>>>>>+<<<<<<<<-]>>>>>[-]>[-]>[-][-]<<<<<[>>>>>+<< 93 | <<<-]>>>>>[<<<<<+>>>>+>-]<[<+>[-]][-]>[-][-]<<<<[>>>>+<<<<-]>>>>[<<<<+>>>+>-]<[<+>[-]]<]<<<<<<<<<<<+ 94 | >>>>[-]+>[-]<<<<<[>>>>[-]>[-]<<<<<[>>>>>+<<<<<-]][-]>>>>>[<<<<<+>>>>>-]<[<<<+>>>[-]][-]][-]>[-]<<<[> 95 | >>+<<<-]][-]>>>[<<<+>>>-]<[<<[-]+>>>>[-]>>[-][-]<<<<<<<<[>>>>>>>>+<<<<<<<<-]>>>>>>>>[<<<<<<<<+>>>>>> 96 | +>>-]<[-]>[-][-]<<<<<<<[>>>>>>>+<<<<<<<-]>>>>>>>[<<<<<<<+>>>>>>+>-][-]>>[-][-]<<<<[>>>>+<<<<-]>>>>[< 97 | <<<+>>+>>-]<[-]>[-][-]<<<[>>>+<<<-]>>>[<<<+>>+>-][-]>[-][-]<<<<<<<<<[>>>>>>>>>+<<<<<<<<<-]>>>>>>>>>[ 98 | <<<<<<<<<+>>>>>>>>+>-][-]>[-]>[-][-]<<<<<<<[>>>>>>>+<<<<<<<-]>>>>>>>[<<<<<<<+>>>>>>+>-]<[<+>[-]][-]> 99 | [-][-]<<<<<<[>>>>>>+<<<<<<-]>>>>>>[<<<<<<+>>>>>+>-]<[<+>[-]]<[[-]+>[-]<<<<<<[>>>>>[-]>[-]<<<<<<[>>>> 100 | >>+<<<<<<-]][-]>>>>>>[<<<<<<+>>>>>>-]<[<<<<->>>>[-]]<<<<<->>>>>[-]<[>+<-][-]<[>+<-][-]<[>+<-][-]<[>+ 101 | <-][-]<[>+<-][-]>>>>>>>>[<<<<<<<<+>>>>>>>>-]><<<[-]>[-]>[-][-]<<<<<<<[>>>>>>>+<<<<<<<-]>>>>>>>[<<<<< 102 | <<+>>>>>>+>-]<[<+>[-]][-]>[-][-]<<<<<<[>>>>>>+<<<<<<-]>>>>>>[<<<<<<+>>>>>+>-]<[<+>[-]]<]>>>[-]<<<[-] 103 | [-]<[>+<-]>[<+>>>>+<<<-][-]>[-]>[-][-]<<<<<[>>>>>+<<<<<-]>>>>>[<<<<<+>>>>+>-]<[<+>[-]][-]>[-][-]<<<< 104 | [>>>>+<<<<-]>>>>[<<<<+>>>+>-]<[<+>[-]]<[[-]+>[-]<<<<[>>>[-]>[-]<<<<[>>>>+<<<<-]][-]>>>>[<<<<+>>>>-]< 105 | [<<->>[-]]<<<-<[-]>[<+>-][-]>[<+>-]<>>>>>[-]<<<<<<<<[>>>>>>>>+<<<<<<<<-]>>>>>[-]>[-]>[-][-]<<<<<[>>> 106 | >>+<<<<<-]>>>>>[<<<<<+>>>>+>-]<[<+>[-]][-]>[-][-]<<<<[>>>>+<<<<-]>>>>[<<<<+>>>+>-]<[<+>[-]]<]<<<<<<< 107 | <<<<+>>>>[-]+>[-]<<<<<[>>>>[-]>[-]<<<<<[>>>>>+<<<<<-]][-]>>>>>[<<<<<+>>>>>-]<[<<<+>>>[-]][-]]<<,][-] 108 | >>>>[-]>>[-][-]<<<<<<<<[>>>>>>>>+<<<<<<<<-]>>>>>>>>[<<<<<<<<+>>>>>>+>>-]<[-]>[-][-]<<<<<<<[>>>>>>>+< 109 | <<<<<<-]>>>>>>>[<<<<<<<+>>>>>>+>-][-]>>[-][-]<<<<[>>>>+<<<<-]>>>>[<<<<+>>+>>-]<[-]>[-][-]<<<[>>>+<<< 110 | -]>>>[<<<+>>+>-][-]>[-][-]<<<<<<<<<[>>>>>>>>>+<<<<<<<<<-]>>>>>>>>>[<<<<<<<<<+>>>>>>>>+>-][-]>[-]>[-] 111 | [-]<<<<<<<[>>>>>>>+<<<<<<<-]>>>>>>>[<<<<<<<+>>>>>>+>-]<[<+>[-]][-]>[-][-]<<<<<<[>>>>>>+<<<<<<-]>>>>> 112 | >[<<<<<<+>>>>>+>-]<[<+>[-]]<[[-]+>[-]<<<<<<[>>>>>[-]>[-]<<<<<<[>>>>>>+<<<<<<-]][-]>>>>>>[<<<<<<+>>>> 113 | >>-]<[<<<<->>>>[-]]<<<<<->>>>>[-]<[>+<-][-]<[>+<-][-]<[>+<-][-]<[>+<-][-]<[>+<-][-]>>>>>>>>[<<<<<<<< 114 | +>>>>>>>>-]><<<[-]>[-]>[-][-]<<<<<<<[>>>>>>>+<<<<<<<-]>>>>>>>[<<<<<<<+>>>>>>+>-]<[<+>[-]][-]>[-][-]< 115 | <<<<<[>>>>>>+<<<<<<-]>>>>>>[<<<<<<+>>>>>+>-]<[<+>[-]]<]>>>[-]<<<[-][-]<[>+<-]>[<+>>>>+<<<-][-]>[-]>[ 116 | -][-]<<<<<[>>>>>+<<<<<-]>>>>>[<<<<<+>>>>+>-]<[<+>[-]][-]>[-][-]<<<<[>>>>+<<<<-]>>>>[<<<<+>>>+>-]<[<+ 117 | >[-]]<[[-]+>[-]<<<<[>>>[-]>[-]<<<<[>>>>+<<<<-]][-]>>>>[<<<<+>>>>-]<[<<->>[-]]<<<-<[-]>[<+>-][-]>[<+> 118 | -]<>>>>>[-]<<<<<<<<[>>>>>>>>+<<<<<<<<-]>>>>>[-]>[-]>[-][-]<<<<<[>>>>>+<<<<<-]>>>>>[<<<<<+>>>>+>-]<[< 119 | +>[-]][-]>[-][-]<<<<[>>>>+<<<<-]>>>>[<<<<+>>>+>-]<[<+>[-]]<]<<<<<<<<<<<+>>>>[-]+>[-]<<<<<[>>>>[-]>[- 120 | ]<<<<<[>>>>>+<<<<<-]][-]>>>>>[<<<<<+>>>>>-]<[<<<+>>>[-]]>>[-]>>[-][-]<<<<<<<<<<[>>>>>>>>>>+<<<<<<<<< 121 | <-]>>>>>>>>>>[<<<<<<<<<<+>>>>>>>>+>>-]<[-]>[-][-]<<<<<<<<<[>>>>>>>>>+<<<<<<<<<-]>>>>>>>>>[<<<<<<<<<+ 122 | >>>>>>>>+>-][-]>>[-][-]<<<<[>>>>+<<<<-]>>>>[<<<<+>>+>>-]<[-]>[-][-]<<<[>>>+<<<-]>>>[<<<+>>+>-]>[-]>[ 123 | -]>[-][-]<<<<<<<[>>>>>>>+<<<<<<<-]>>>>>>>[<<<<<<<+>>>>>>+>-]<[<+>[-]][-]>[-][-]<<<<<<[>>>>>>+<<<<<<- 124 | ]>>>>>>[<<<<<<+>>>>>+>-]<[<+>[-]]<[[-]+>[-]<<<<<<[>>>>>[-]>[-]<<<<<<[>>>>>>+<<<<<<-]][-]>>>>>>[<<<<< 125 | <+>>>>>>-]<[<<<<->>>>[-]]<<<<<->>>>[-]<[>+<-][-]<[>+<-][-]<[>+<-][-]<[>+<-][-]>>>>>>>>[<<<<<<<<+>>>> 126 | >>>>-]><<<[-]>[-]>[-][-]<<<<<<<[>>>>>>>+<<<<<<<-]>>>>>>>[<<<<<<<+>>>>>>+>-]<[<+>[-]][-]>[-][-]<<<<<< 127 | [>>>>>>+<<<<<<-]>>>>>>[<<<<<<+>>>>>+>-]<[<+>[-]]<]<[-]>[-][-]>>>[<<<+>>>-]<<<[>>>+<<<<+>-][-]>[-]>[- 128 | ][-]<<<<<[>>>>>+<<<<<-]>>>>>[<<<<<+>>>>+>-]<[<+>[-]][-]>[-][-]<<<<[>>>>+<<<<-]>>>>[<<<<+>>>+>-]<[<+> 129 | [-]]<[[-]+>[-]<<<<[>>>[-]>[-]<<<<[>>>>+<<<<-]][-]>>>>[<<<<+>>>>-]<[<<->>[-]]<<<-<[-]>[<+>-][-]>[<+>- 130 | ][-]>[<+>-]<>>>>[-]<<<<<<<<[>>>>>>>>+<<<<<<<<-]>>>>>[-]>[-]>[-][-]<<<<<[>>>>>+<<<<<-]>>>>>[<<<<<+>>> 131 | >+>-]<[<+>[-]][-]>[-][-]<<<<[>>>>+<<<<-]>>>>[<<<<+>>>+>-]<[<+>[-]]<]<<<<<<<<<[-]>>>>[-][-]>>>>[<<<<+ 132 | >>>>-]<<<<[>>>>+<<<<<<<<+>>>>-]<<<<[->>[-]+>[-]<<<[->>[-]+>[-]<<<[->>[-]+>[-]<<<[->>[-]+>[-]<<<[->>[ 133 | -]+>[-]<<<[->>[-]+>[-]<<<[->>[-]+>[-]<<<[->>[-]+>[-]<<<[>>[-]>[-]<<<[>>>+<<<-]][-]>>>[<<<+>>>-]<[>>[ 134 | -]>>[-][-]<<<<<<<<[>>>>>>>>+<<<<<<<<-]>>>>>>>>[<<<<<<<<+>>>>>>+>>-]<[-]>[-][-]<<<<<<<[>>>>>>>+<<<<<< 135 | <-]>>>>>>>[<<<<<<<+>>>>>>+>-][-]>>[-][-]<<<<[>>>>+<<<<-]>>>>[<<<<+>>+>>-]<[-]>[-][-]<<<[>>>+<<<-]>>> 136 | [<<<+>>+>-]>[-]>[-]>[-][-]<<<<<<<[>>>>>>>+<<<<<<<-]>>>>>>>[<<<<<<<+>>>>>>+>-]<[<+>[-]][-]>[-][-]<<<< 137 | <<[>>>>>>+<<<<<<-]>>>>>>[<<<<<<+>>>>>+>-]<[<+>[-]]<[[-]+>[-]<<<<<<[>>>>>[-]>[-]<<<<<<[>>>>>>+<<<<<<- 138 | ]][-]>>>>>>[<<<<<<+>>>>>>-]<[<<<<->>>>[-]]<<<<<->>>>[-]<[>+<-][-]<[>+<-][-]<[>+<-][-]<[>+<-][-]>>>>> 139 | >>>[<<<<<<<<+>>>>>>>>-]><<<[-]>[-]>[-][-]<<<<<<<[>>>>>>>+<<<<<<<-]>>>>>>>[<<<<<<<+>>>>>>+>-]<[<+>[-] 140 | ][-]>[-][-]<<<<<<[>>>>>>+<<<<<<-]>>>>>>[<<<<<<+>>>>>+>-]<[<+>[-]]<]<[-]>[-][-]>>>[<<<+>>>-]<<<[>>>+< 141 | <<<+>-][-]>[-]>[-][-]<<<<<[>>>>>+<<<<<-]>>>>>[<<<<<+>>>>+>-]<[<+>[-]][-]>[-][-]<<<<[>>>>+<<<<-]>>>>[ 142 | <<<<+>>>+>-]<[<+>[-]]<[[-]+>[-]<<<<[>>>[-]>[-]<<<<[>>>>+<<<<-]][-]>>>>[<<<<+>>>>-]<[<<->>[-]]<<<-<[- 143 | ]>[<+>-][-]>[<+>-][-]>[<+>-]<>>>>[-]<<<<<<<<[>>>>>>>>+<<<<<<<<-]>>>>>[-]>[-]>[-][-]<<<<<[>>>>>+<<<<< 144 | -]>>>>>[<<<<<+>>>>+>-]<[<+>[-]][-]>[-][-]<<<<[>>>>+<<<<-]>>>>[<<<<+>>>+>-]<[<+>[-]]<]<<<<<<<<<[-]>>> 145 | >[-][-]>>>>[<<<<+>>>>-]<<<<[>>>>+<<<<<<<<+>>>>-]<<[-]+>[-]<<<[>[-]+[>[-]+>[-]<<<<<<<[>>>>>>[-]>[-]<< 146 | <<<<<[>>>>>>>+<<<<<<<-]][-]>>>>>>>[<<<<<<<+>>>>>>>-]<[<<<<<->>>>>[-]]<<<<<<->>>>>>>>[-]>>[-][-]<<<<< 147 | <<<<<[>>>>>>>>>>+<<<<<<<<<<-]>>>>>>>>>>[<<<<<<<<<<+>>>>>>>>+>>-]<[-]>[-][-]<<<<<<<<<[>>>>>>>>>+<<<<< 148 | <<<<-]>>>>>>>>>[<<<<<<<<<+>>>>>>>>+>-][-]>>[-][-]<<<<[>>>>+<<<<-]>>>>[<<<<+>>+>>-]<[-]>[-][-]<<<[>>> 149 | +<<<-]>>>[<<<+>>+>-]>[-]>[-]>[-][-]<<<<<<<[>>>>>>>+<<<<<<<-]>>>>>>>[<<<<<<<+>>>>>>+>-]<[<+>[-]][-]>[ 150 | -][-]<<<<<<[>>>>>>+<<<<<<-]>>>>>>[<<<<<<+>>>>>+>-]<[<+>[-]]<[[-]+>[-]<<<<<<[>>>>>[-]>[-]<<<<<<[>>>>> 151 | >+<<<<<<-]][-]>>>>>>[<<<<<<+>>>>>>-]<[<<<<->>>>[-]]<<<<<->>>>[-]<[>+<-][-]<[>+<-][-]<[>+<-][-]<[>+<- 152 | ][-]>>>>>>>>[<<<<<<<<+>>>>>>>>-]><<<[-]>[-]>[-][-]<<<<<<<[>>>>>>>+<<<<<<<-]>>>>>>>[<<<<<<<+>>>>>>+>- 153 | ]<[<+>[-]][-]>[-][-]<<<<<<[>>>>>>+<<<<<<-]>>>>>>[<<<<<<+>>>>>+>-]<[<+>[-]]<]<[-]>[-][-]>>>[<<<+>>>-] 154 | <<<[>>>+<<<<+>-][-]>[-]>[-][-]<<<<<[>>>>>+<<<<<-]>>>>>[<<<<<+>>>>+>-]<[<+>[-]][-]>[-][-]<<<<[>>>>+<< 155 | <<-]>>>>[<<<<+>>>+>-]<[<+>[-]]<[[-]+>[-]<<<<[>>>[-]>[-]<<<<[>>>>+<<<<-]][-]>>>>[<<<<+>>>>-]<[<<->>[- 156 | ]]<<<-<[-]>[<+>-][-]>[<+>-][-]>[<+>-]<>>>>[-]<<<<<<<<[>>>>>>>>+<<<<<<<<-]>>>>>[-]>[-]>[-][-]<<<<<[>> 157 | >>>+<<<<<-]>>>>>[<<<<<+>>>>+>-]<[<+>[-]][-]>[-][-]<<<<[>>>>+<<<<-]>>>>[<<<<+>>>+>-]<[<+>[-]]<]<<<<<< 158 | <<<[-]>>>>[-][-]>>>>[<<<<+>>>>-]<<<<[>>>>+<<<<<<<<+>>>>-]<<<<------->>[-]+>[-]<<<[->>[-]+>[-]<<<[>>[ 159 | -]>[-]<<<[>>>+<<<-]][-]>>>[<<<+>>>-]<[<+>[-]][-]>[-]<<<[>>>+<<<-]][-]>>>[<<<+>>>-]<[<->[-]]<]>[-]>[- 160 | ]<<<[>>>+<<<-]][-]>>>[<<<+>>>-]<[[-]][-]][-]>[-]<<<[>>>+<<<-]][-]>>>[<<<+>>>-]<[>>[-]>>[-][-]<<<<<<< 161 | <[>>>>>>>>+<<<<<<<<-]>>>>>>>>[<<<<<<<<+>>>>>>+>>-]<[-]>[-][-]<<<<<<<[>>>>>>>+<<<<<<<-]>>>>>>>[<<<<<< 162 | <+>>>>>>+>-][-]>>[-][-]<<<<[>>>>+<<<<-]>>>>[<<<<+>>+>>-]<[-]>[-][-]<<<[>>>+<<<-]>>>[<<<+>>+>-]>[-]>[ 163 | -]>[-][-]<<<<<<<[>>>>>>>+<<<<<<<-]>>>>>>>[<<<<<<<+>>>>>>+>-]<[<+>[-]][-]>[-][-]<<<<<<[>>>>>>+<<<<<<- 164 | ]>>>>>>[<<<<<<+>>>>>+>-]<[<+>[-]]<[[-]+>[-]<<<<<<[>>>>>[-]>[-]<<<<<<[>>>>>>+<<<<<<-]][-]>>>>>>[<<<<< 165 | <+>>>>>>-]<[<<<<->>>>[-]]<<<<<->>>>[-]<[>+<-][-]<[>+<-][-]<[>+<-][-]<[>+<-][-]>>>>>>>>[<<<<<<<<+>>>> 166 | >>>>-]><<<[-]>[-]>[-][-]<<<<<<<[>>>>>>>+<<<<<<<-]>>>>>>>[<<<<<<<+>>>>>>+>-]<[<+>[-]][-]>[-][-]<<<<<< 167 | [>>>>>>+<<<<<<-]>>>>>>[<<<<<<+>>>>>+>-]<[<+>[-]]<]<[-]>[-][-]>>>[<<<+>>>-]<<<[>>>+<<<<+>-][-]>[-]>[- 168 | ][-]<<<<<[>>>>>+<<<<<-]>>>>>[<<<<<+>>>>+>-]<[<+>[-]][-]>[-][-]<<<<[>>>>+<<<<-]>>>>[<<<<+>>>+>-]<[<+> 169 | [-]]<[[-]+>[-]<<<<[>>>[-]>[-]<<<<[>>>>+<<<<-]][-]>>>>[<<<<+>>>>-]<[<<->>[-]]<<<-<[-]>[<+>-][-]>[<+>- 170 | ][-]>[<+>-]<>>>>[-]<<<<<<<<[>>>>>>>>+<<<<<<<<-]>>>>>[-]>[-]>[-][-]<<<<<[>>>>>+<<<<<-]>>>>>[<<<<<+>>> 171 | >+>-]<[<+>[-]][-]>[-][-]<<<<[>>>>+<<<<-]>>>>[<<<<+>>>+>-]<[<+>[-]]<]<<<<<<<<<[-]>>>>[-][-]>>>>[<<<<+ 172 | >>>>-]<<<<[>>>>+<<<<<<<<+>>>>-]<<[-]+>[-]<<<[>>[-]>[-]<<<[>>>+<<<-]][-]>>>[<<<+>>>-]<[<[-]+[<<<<<+>> 173 | >>>>[-]+>[-]<<<<<<<[>>>>>>[-]>[-]<<<<<<<[>>>>>>>+<<<<<<<-]][-]>>>>>>>[<<<<<<<+>>>>>>>-]<[<<<<<+>>>>> 174 | [-]]>>[-]>>[-][-]<<<<<<<<<<[>>>>>>>>>>+<<<<<<<<<<-]>>>>>>>>>>[<<<<<<<<<<+>>>>>>>>+>>-]<[-]>[-][-]<<< 175 | <<<<<<[>>>>>>>>>+<<<<<<<<<-]>>>>>>>>>[<<<<<<<<<+>>>>>>>>+>-][-]>>[-][-]<<<<[>>>>+<<<<-]>>>>[<<<<+>>+ 176 | >>-]<[-]>[-][-]<<<[>>>+<<<-]>>>[<<<+>>+>-]>[-]>[-]>[-][-]<<<<<<<[>>>>>>>+<<<<<<<-]>>>>>>>[<<<<<<<+>> 177 | >>>>+>-]<[<+>[-]][-]>[-][-]<<<<<<[>>>>>>+<<<<<<-]>>>>>>[<<<<<<+>>>>>+>-]<[<+>[-]]<[[-]+>[-]<<<<<<[>> 178 | >>>[-]>[-]<<<<<<[>>>>>>+<<<<<<-]][-]>>>>>>[<<<<<<+>>>>>>-]<[<<<<->>>>[-]]<<<<<->>>>[-]<[>+<-][-]<[>+ 179 | <-][-]<[>+<-][-]<[>+<-][-]>>>>>>>>[<<<<<<<<+>>>>>>>>-]><<<[-]>[-]>[-][-]<<<<<<<[>>>>>>>+<<<<<<<-]>>> 180 | >>>>[<<<<<<<+>>>>>>+>-]<[<+>[-]][-]>[-][-]<<<<<<[>>>>>>+<<<<<<-]>>>>>>[<<<<<<+>>>>>+>-]<[<+>[-]]<]<[ 181 | -]>[-][-]>>>[<<<+>>>-]<<<[>>>+<<<<+>-][-]>[-]>[-][-]<<<<<[>>>>>+<<<<<-]>>>>>[<<<<<+>>>>+>-]<[<+>[-]] 182 | [-]>[-][-]<<<<[>>>>+<<<<-]>>>>[<<<<+>>>+>-]<[<+>[-]]<[[-]+>[-]<<<<[>>>[-]>[-]<<<<[>>>>+<<<<-]][-]>>> 183 | >[<<<<+>>>>-]<[<<->>[-]]<<<-<[-]>[<+>-][-]>[<+>-][-]>[<+>-]<>>>>[-]<<<<<<<<[>>>>>>>>+<<<<<<<<-]>>>>> 184 | [-]>[-]>[-][-]<<<<<[>>>>>+<<<<<-]>>>>>[<<<<<+>>>>+>-]<[<+>[-]][-]>[-][-]<<<<[>>>>+<<<<-]>>>>[<<<<+>> 185 | >+>-]<[<+>[-]]<]<<<<<<<<<[-]>>>>[-][-]>>>>[<<<<+>>>>-]<<<<[>>>>+<<<<<<<<+>>>>-]<<<<------->>[-]+>[-] 186 | <<<[->>[-]+>[-]<<<[>>[-]>[-]<<<[>>>+<<<-]][-]>>>[<<<+>>>-]<[<->[-]][-]>[-]<<<[>>>+<<<-]][-]>>>[<<<+> 187 | >>-]<[<+>[-]]<]>[-]][-]][-]>[-]<<<[>>>+<<<-]][-]>>>[<<<+>>>-]<[<<<<+>>>>[-]+>[-]<<<<<[>>>>[-]>[-]<<< 188 | <<[>>>>>+<<<<<-]][-]>>>>>[<<<<<+>>>>>-]<[<<<+>>>[-]][-]][-]>[-]<<<[>>>+<<<-]][-]>>>[<<<+>>>-]<[[-]+> 189 | [-]<<<<<[>>>>[-]>[-]<<<<<[>>>>>+<<<<<-]][-]>>>>>[<<<<<+>>>>>-]<[<<<->>>[-]]<<<<->>>>[-]][-]>[-]<<<[> 190 | >>+<<<-]][-]>>>[<<<+>>>-]<[>>[-]>>[-][-]<<<<<<<<[>>>>>>>>+<<<<<<<<-]>>>>>>>>[<<<<<<<<+>>>>>>+>>-]<[- 191 | ]>[-][-]<<<<<<<[>>>>>>>+<<<<<<<-]>>>>>>>[<<<<<<<+>>>>>>+>-][-]>>[-][-]<<<<[>>>>+<<<<-]>>>>[<<<<+>>+> 192 | >-]<[-]>[-][-]<<<[>>>+<<<-]>>>[<<<+>>+>-]>[-]>[-]>[-][-]<<<<<<<[>>>>>>>+<<<<<<<-]>>>>>>>[<<<<<<<+>>> 193 | >>>+>-]<[<+>[-]][-]>[-][-]<<<<<<[>>>>>>+<<<<<<-]>>>>>>[<<<<<<+>>>>>+>-]<[<+>[-]]<[[-]+>[-]<<<<<<[>>> 194 | >>[-]>[-]<<<<<<[>>>>>>+<<<<<<-]][-]>>>>>>[<<<<<<+>>>>>>-]<[<<<<->>>>[-]]<<<<<->>>>[-]<[>+<-][-]<[>+< 195 | -][-]<[>+<-][-]<[>+<-][-]>>>>>>>>[<<<<<<<<+>>>>>>>>-]><<<[-]>[-]>[-][-]<<<<<<<[>>>>>>>+<<<<<<<-]>>>> 196 | >>>[<<<<<<<+>>>>>>+>-]<[<+>[-]][-]>[-][-]<<<<<<[>>>>>>+<<<<<<-]>>>>>>[<<<<<<+>>>>>+>-]<[<+>[-]]<]<[- 197 | ]>[-][-]>>>[<<<+>>>-]<<<[>>>+<<<<+>-][-]>[-]>[-][-]<<<<<[>>>>>+<<<<<-]>>>>>[<<<<<+>>>>+>-]<[<+>[-]][ 198 | -]>[-][-]<<<<[>>>>+<<<<-]>>>>[<<<<+>>>+>-]<[<+>[-]]<[[-]+>[-]<<<<[>>>[-]>[-]<<<<[>>>>+<<<<-]][-]>>>> 199 | [<<<<+>>>>-]<[<<->>[-]]<<<-<[-]>[<+>-][-]>[<+>-][-]>[<+>-]<>>>>[-]<<<<<<<<[>>>>>>>>+<<<<<<<<-]>>>>>[ 200 | -]>[-]>[-][-]<<<<<[>>>>>+<<<<<-]>>>>>[<<<<<+>>>>+>-]<[<+>[-]][-]>[-][-]<<<<[>>>>+<<<<-]>>>>[<<<<+>>> 201 | +>-]<[<+>[-]]<]<<<<<<<<<[-]>>>>[-][-]>>>>[<<<<+>>>>-]<<<<[>>>>+<<<<<<<<+>>>>-]<<<<.>>[-]][-]>[-]<<<[ 202 | >>>+<<<-]][-]>>>[<<<+>>>-]<[>>[-]>>[-][-]<<<<<<<<[>>>>>>>>+<<<<<<<<-]>>>>>>>>[<<<<<<<<+>>>>>>+>>-]<[ 203 | -]>[-][-]<<<<<<<[>>>>>>>+<<<<<<<-]>>>>>>>[<<<<<<<+>>>>>>+>-][-]>>[-][-]<<<<[>>>>+<<<<-]>>>>[<<<<+>>+ 204 | >>-]<[-]>[-][-]<<<[>>>+<<<-]>>>[<<<+>>+>-]>[-]>[-]>[-][-]<<<<<<<[>>>>>>>+<<<<<<<-]>>>>>>>[<<<<<<<+>> 205 | >>>>+>-]<[<+>[-]][-]>[-][-]<<<<<<[>>>>>>+<<<<<<-]>>>>>>[<<<<<<+>>>>>+>-]<[<+>[-]]<[[-]+>[-]<<<<<<[>> 206 | >>>[-]>[-]<<<<<<[>>>>>>+<<<<<<-]][-]>>>>>>[<<<<<<+>>>>>>-]<[<<<<->>>>[-]]<<<<<->>>>[-]<[>+<-][-]<[>+ 207 | <-][-]<[>+<-][-]<[>+<-][-]>>>>>>>>[<<<<<<<<+>>>>>>>>-]><<<[-]>[-]>[-][-]<<<<<<<[>>>>>>>+<<<<<<<-]>>> 208 | >>>>[<<<<<<<+>>>>>>+>-]<[<+>[-]][-]>[-][-]<<<<<<[>>>>>>+<<<<<<-]>>>>>>[<<<<<<+>>>>>+>-]<[<+>[-]]<]<[ 209 | -]>[-][-]>>>[<<<+>>>-]<<<[>>>+<<<<+>-][-]>[-]>[-][-]<<<<<[>>>>>+<<<<<-]>>>>>[<<<<<+>>>>+>-]<[<+>[-]] 210 | [-]>[-][-]<<<<[>>>>+<<<<-]>>>>[<<<<+>>>+>-]<[<+>[-]]<[[-]+>[-]<<<<[>>>[-]>[-]<<<<[>>>>+<<<<-]][-]>>> 211 | >[<<<<+>>>>-]<[<<->>[-]]<<<-<[-]>[<+>-][-]>[<+>-][-]>[<+>-]<>>>>[-]<<<<<<<<[>>>>>>>>+<<<<<<<<-]>>>>> 212 | [-]>[-]>[-][-]<<<<<[>>>>>+<<<<<-]>>>>>[<<<<<+>>>>+>-]<[<+>[-]][-]>[-][-]<<<<[>>>>+<<<<-]>>>>[<<<<+>> 213 | >+>-]<[<+>[-]]<]<<<<<<<<<[-]>>>>[-][-]>>>>[<<<<+>>>>-]<<<<[>>>>+<<<<<<<<+>>>>-]<<<<->>>>[-]>>[-][-]< 214 | <<<<<<<[>>>>>>>>+<<<<<<<<-]>>>>>>>>[<<<<<<<<+>>>>>>+>>-]<[-]>[-][-]<<<<<<<[>>>>>>>+<<<<<<<-]>>>>>>>[ 215 | <<<<<<<+>>>>>>+>-][-]>>[-][-]<<<<[>>>>+<<<<-]>>>>[<<<<+>>+>>-]<[-]>[-][-]<<<[>>>+<<<-]>>>[<<<+>>+>-] 216 | [-]>[-][-]<<<<<<<<<[>>>>>>>>>+<<<<<<<<<-]>>>>>>>>>[<<<<<<<<<+>>>>>>>>+>-][-]>[-]>[-][-]<<<<<<<[>>>>> 217 | >>+<<<<<<<-]>>>>>>>[<<<<<<<+>>>>>>+>-]<[<+>[-]][-]>[-][-]<<<<<<[>>>>>>+<<<<<<-]>>>>>>[<<<<<<+>>>>>+> 218 | -]<[<+>[-]]<[[-]+>[-]<<<<<<[>>>>>[-]>[-]<<<<<<[>>>>>>+<<<<<<-]][-]>>>>>>[<<<<<<+>>>>>>-]<[<<<<->>>>[ 219 | -]]<<<<<->>>>>[-]<[>+<-][-]<[>+<-][-]<[>+<-][-]<[>+<-][-]<[>+<-][-]>>>>>>>>[<<<<<<<<+>>>>>>>>-]><<<[ 220 | -]>[-]>[-][-]<<<<<<<[>>>>>>>+<<<<<<<-]>>>>>>>[<<<<<<<+>>>>>>+>-]<[<+>[-]][-]>[-][-]<<<<<<[>>>>>>+<<< 221 | <<<-]>>>>>>[<<<<<<+>>>>>+>-]<[<+>[-]]<]>>>[-]<<<[-][-]<[>+<-]>[<+>>>>+<<<-][-]>[-]>[-][-]<<<<<[>>>>> 222 | +<<<<<-]>>>>>[<<<<<+>>>>+>-]<[<+>[-]][-]>[-][-]<<<<[>>>>+<<<<-]>>>>[<<<<+>>>+>-]<[<+>[-]]<[[-]+>[-]< 223 | <<<[>>>[-]>[-]<<<<[>>>>+<<<<-]][-]>>>>[<<<<+>>>>-]<[<<->>[-]]<<<-<[-]>[<+>-][-]>[<+>-]<>>>>>[-]<<<<< 224 | <<<[>>>>>>>>+<<<<<<<<-]>>>>>[-]>[-]>[-][-]<<<<<[>>>>>+<<<<<-]>>>>>[<<<<<+>>>>+>-]<[<+>[-]][-]>[-][-] 225 | <<<<[>>>>+<<<<-]>>>>[<<<<+>>>+>-]<[<+>[-]]<]<<<<<<<[-]][-]>[-]<<<[>>>+<<<-]][-]>>>[<<<+>>>-]<[<<,>>> 226 | >[-]>>[-][-]<<<<<<<<[>>>>>>>>+<<<<<<<<-]>>>>>>>>[<<<<<<<<+>>>>>>+>>-]<[-]>[-][-]<<<<<<<[>>>>>>>+<<<< 227 | <<<-]>>>>>>>[<<<<<<<+>>>>>>+>-][-]>>[-][-]<<<<[>>>>+<<<<-]>>>>[<<<<+>>+>>-]<[-]>[-][-]<<<[>>>+<<<-]> 228 | >>[<<<+>>+>-][-]>[-][-]<<<<<<<<<[>>>>>>>>>+<<<<<<<<<-]>>>>>>>>>[<<<<<<<<<+>>>>>>>>+>-][-]>[-]>[-][-] 229 | <<<<<<<[>>>>>>>+<<<<<<<-]>>>>>>>[<<<<<<<+>>>>>>+>-]<[<+>[-]][-]>[-][-]<<<<<<[>>>>>>+<<<<<<-]>>>>>>[< 230 | <<<<<+>>>>>+>-]<[<+>[-]]<[[-]+>[-]<<<<<<[>>>>>[-]>[-]<<<<<<[>>>>>>+<<<<<<-]][-]>>>>>>[<<<<<<+>>>>>>- 231 | ]<[<<<<->>>>[-]]<<<<<->>>>>[-]<[>+<-][-]<[>+<-][-]<[>+<-][-]<[>+<-][-]<[>+<-][-]>>>>>>>>[<<<<<<<<+>> 232 | >>>>>>-]><<<[-]>[-]>[-][-]<<<<<<<[>>>>>>>+<<<<<<<-]>>>>>>>[<<<<<<<+>>>>>>+>-]<[<+>[-]][-]>[-][-]<<<< 233 | <<[>>>>>>+<<<<<<-]>>>>>>[<<<<<<+>>>>>+>-]<[<+>[-]]<]>>>[-]<<<[-][-]<[>+<-]>[<+>>>>+<<<-][-]>[-]>[-][ 234 | -]<<<<<[>>>>>+<<<<<-]>>>>>[<<<<<+>>>>+>-]<[<+>[-]][-]>[-][-]<<<<[>>>>+<<<<-]>>>>[<<<<+>>>+>-]<[<+>[- 235 | ]]<[[-]+>[-]<<<<[>>>[-]>[-]<<<<[>>>>+<<<<-]][-]>>>>[<<<<+>>>>-]<[<<->>[-]]<<<-<[-]>[<+>-][-]>[<+>-]< 236 | >>>>>[-]<<<<<<<<[>>>>>>>>+<<<<<<<<-]>>>>>[-]>[-]>[-][-]<<<<<[>>>>>+<<<<<-]>>>>>[<<<<<+>>>>+>-]<[<+>[ 237 | -]][-]>[-][-]<<<<[>>>>+<<<<-]>>>>[<<<<+>>>+>-]<[<+>[-]]<]<<<<<<<[-]][-]>[-]<<<[>>>+<<<-]][-]>>>[<<<+ 238 | >>>-]<[>>[-]>>[-][-]<<<<<<<<[>>>>>>>>+<<<<<<<<-]>>>>>>>>[<<<<<<<<+>>>>>>+>>-]<[-]>[-][-]<<<<<<<[>>>> 239 | >>>+<<<<<<<-]>>>>>>>[<<<<<<<+>>>>>>+>-][-]>>[-][-]<<<<[>>>>+<<<<-]>>>>[<<<<+>>+>>-]<[-]>[-][-]<<<[>> 240 | >+<<<-]>>>[<<<+>>+>-]>[-]>[-]>[-][-]<<<<<<<[>>>>>>>+<<<<<<<-]>>>>>>>[<<<<<<<+>>>>>>+>-]<[<+>[-]][-]> 241 | [-][-]<<<<<<[>>>>>>+<<<<<<-]>>>>>>[<<<<<<+>>>>>+>-]<[<+>[-]]<[[-]+>[-]<<<<<<[>>>>>[-]>[-]<<<<<<[>>>> 242 | >>+<<<<<<-]][-]>>>>>>[<<<<<<+>>>>>>-]<[<<<<->>>>[-]]<<<<<->>>>[-]<[>+<-][-]<[>+<-][-]<[>+<-][-]<[>+< 243 | -][-]>>>>>>>>[<<<<<<<<+>>>>>>>>-]><<<[-]>[-]>[-][-]<<<<<<<[>>>>>>>+<<<<<<<-]>>>>>>>[<<<<<<<+>>>>>>+> 244 | -]<[<+>[-]][-]>[-][-]<<<<<<[>>>>>>+<<<<<<-]>>>>>>[<<<<<<+>>>>>+>-]<[<+>[-]]<]<[-]>[-][-]>>>[<<<+>>>- 245 | ]<<<[>>>+<<<<+>-][-]>[-]>[-][-]<<<<<[>>>>>+<<<<<-]>>>>>[<<<<<+>>>>+>-]<[<+>[-]][-]>[-][-]<<<<[>>>>+< 246 | <<<-]>>>>[<<<<+>>>+>-]<[<+>[-]]<[[-]+>[-]<<<<[>>>[-]>[-]<<<<[>>>>+<<<<-]][-]>>>>[<<<<+>>>>-]<[<<->>[ 247 | -]]<<<-<[-]>[<+>-][-]>[<+>-][-]>[<+>-]<>>>>[-]<<<<<<<<[>>>>>>>>+<<<<<<<<-]>>>>>[-]>[-]>[-][-]<<<<<[> 248 | >>>>+<<<<<-]>>>>>[<<<<<+>>>>+>-]<[<+>[-]][-]>[-][-]<<<<[>>>>+<<<<-]>>>>[<<<<+>>>+>-]<[<+>[-]]<]<<<<< 249 | <<<<[-]>>>>[-][-]>>>>[<<<<+>>>>-]<<<<[>>>>+<<<<<<<<+>>>>-]<<<<+>>>>[-]>>[-][-]<<<<<<<<[>>>>>>>>+<<<< 250 | <<<<-]>>>>>>>>[<<<<<<<<+>>>>>>+>>-]<[-]>[-][-]<<<<<<<[>>>>>>>+<<<<<<<-]>>>>>>>[<<<<<<<+>>>>>>+>-][-] 251 | >>[-][-]<<<<[>>>>+<<<<-]>>>>[<<<<+>>+>>-]<[-]>[-][-]<<<[>>>+<<<-]>>>[<<<+>>+>-][-]>[-][-]<<<<<<<<<[> 252 | >>>>>>>>+<<<<<<<<<-]>>>>>>>>>[<<<<<<<<<+>>>>>>>>+>-][-]>[-]>[-][-]<<<<<<<[>>>>>>>+<<<<<<<-]>>>>>>>[< 253 | <<<<<<+>>>>>>+>-]<[<+>[-]][-]>[-][-]<<<<<<[>>>>>>+<<<<<<-]>>>>>>[<<<<<<+>>>>>+>-]<[<+>[-]]<[[-]+>[-] 254 | <<<<<<[>>>>>[-]>[-]<<<<<<[>>>>>>+<<<<<<-]][-]>>>>>>[<<<<<<+>>>>>>-]<[<<<<->>>>[-]]<<<<<->>>>>[-]<[>+ 255 | <-][-]<[>+<-][-]<[>+<-][-]<[>+<-][-]<[>+<-][-]>>>>>>>>[<<<<<<<<+>>>>>>>>-]><<<[-]>[-]>[-][-]<<<<<<<[ 256 | >>>>>>>+<<<<<<<-]>>>>>>>[<<<<<<<+>>>>>>+>-]<[<+>[-]][-]>[-][-]<<<<<<[>>>>>>+<<<<<<-]>>>>>>[<<<<<<+>> 257 | >>>+>-]<[<+>[-]]<]>>>[-]<<<[-][-]<[>+<-]>[<+>>>>+<<<-][-]>[-]>[-][-]<<<<<[>>>>>+<<<<<-]>>>>>[<<<<<+> 258 | >>>+>-]<[<+>[-]][-]>[-][-]<<<<[>>>>+<<<<-]>>>>[<<<<+>>>+>-]<[<+>[-]]<[[-]+>[-]<<<<[>>>[-]>[-]<<<<[>> 259 | >>+<<<<-]][-]>>>>[<<<<+>>>>-]<[<<->>[-]]<<<-<[-]>[<+>-][-]>[<+>-]<>>>>>[-]<<<<<<<<[>>>>>>>>+<<<<<<<< 260 | -]>>>>>[-]>[-]>[-][-]<<<<<[>>>>>+<<<<<-]>>>>>[<<<<<+>>>>+>-]<[<+>[-]][-]>[-][-]<<<<[>>>>+<<<<-]>>>>[ 261 | <<<<+>>>+>-]<[<+>[-]]<]<<<<<<<[-]]<<<<<<+>>>>>>[-]+>[-]<<<<<<<[>>>>>>[-]>[-]<<<<<<<[>>>>>>>+<<<<<<<- 262 | ]][-]>>>>>>>[<<<<<<<+>>>>>>>-]<[<<<<<+>>>>>[-]]>>[-]>>[-][-]<<<<<<<<<<[>>>>>>>>>>+<<<<<<<<<<-]>>>>>> 263 | >>>>[<<<<<<<<<<+>>>>>>>>+>>-]<[-]>[-][-]<<<<<<<<<[>>>>>>>>>+<<<<<<<<<-]>>>>>>>>>[<<<<<<<<<+>>>>>>>>+ 264 | >-][-]>>[-][-]<<<<[>>>>+<<<<-]>>>>[<<<<+>>+>>-]<[-]>[-][-]<<<[>>>+<<<-]>>>[<<<+>>+>-]>[-]>[-]>[-][-] 265 | <<<<<<<[>>>>>>>+<<<<<<<-]>>>>>>>[<<<<<<<+>>>>>>+>-]<[<+>[-]][-]>[-][-]<<<<<<[>>>>>>+<<<<<<-]>>>>>>[< 266 | <<<<<+>>>>>+>-]<[<+>[-]]<[[-]+>[-]<<<<<<[>>>>>[-]>[-]<<<<<<[>>>>>>+<<<<<<-]][-]>>>>>>[<<<<<<+>>>>>>- 267 | ]<[<<<<->>>>[-]]<<<<<->>>>[-]<[>+<-][-]<[>+<-][-]<[>+<-][-]<[>+<-][-]>>>>>>>>[<<<<<<<<+>>>>>>>>-]><< 268 | <[-]>[-]>[-][-]<<<<<<<[>>>>>>>+<<<<<<<-]>>>>>>>[<<<<<<<+>>>>>>+>-]<[<+>[-]][-]>[-][-]<<<<<<[>>>>>>+< 269 | <<<<<-]>>>>>>[<<<<<<+>>>>>+>-]<[<+>[-]]<]<[-]>[-][-]>>>[<<<+>>>-]<<<[>>>+<<<<+>-][-]>[-]>[-][-]<<<<< 270 | [>>>>>+<<<<<-]>>>>>[<<<<<+>>>>+>-]<[<+>[-]][-]>[-][-]<<<<[>>>>+<<<<-]>>>>[<<<<+>>>+>-]<[<+>[-]]<[[-] 271 | +>[-]<<<<[>>>[-]>[-]<<<<[>>>>+<<<<-]][-]>>>>[<<<<+>>>>-]<[<<->>[-]]<<<-<[-]>[<+>-][-]>[<+>-][-]>[<+> 272 | -]<>>>>[-]<<<<<<<<[>>>>>>>>+<<<<<<<<-]>>>>>[-]>[-]>[-][-]<<<<<[>>>>>+<<<<<-]>>>>>[<<<<<+>>>>+>-]<[<+ 273 | >[-]][-]>[-][-]<<<<[>>>>+<<<<-]>>>>[<<<<+>>>+>-]<[<+>[-]]<]<<<<<<<<<[-]>>>>[-][-]>>>>[<<<<+>>>>-]<<< 274 | <[>>>>+<<<<<<<<+>>>>-]<<<<] 275 | --------------------------------------------------------------------------------