#iroha2019day3k. [iroha2019_day3_k]えそらんぐ

[iroha2019_day3_k]えそらんぐ

问题

世界上有很多方便易用的编程语言,如C/C++、Java、Python等。这些语言的出现大大降低了计算机的门槛,与晦涩难懂的汇编语言相比。

与这些语言相对立的是所谓的“难解编程语言(Esolang)”,比如Brainfuck、Lazy K和Piet等。这些语言的特点就是“非常难解”。例如在Brainfuck中,输出"Hello, World!"的程序如下所示(举例)。

+++++++++\[>++++++++<-\]>.<+++++++++\[>+++<-\]>++.+++++++..+++.<+++++++++\[>-------<-\]>----.<+++++++++\[>-<-\]>---.<+++++++++\[>++++++<-\]>+.<+++++++++\[>++<-\]>++++++.+++.------.--------.<+++++++++\[>-------<-\]>----.```

像这样,你完全看不懂写了什么。

Brainfuck程序只由8个符号组成,通过从单一的内存(数组)中读取和写入数据来执行操作。内存的引用地址由一个变量叫做“指针”来保存。每个符号代表的操作意义如下:

*   `>`:增加指针值1
*   `<`:减少指针值1
*   `+`:增加指针指向内存的值1
*   `-`:减少指针指向内存的值1
*   `.`:输出指针指向内存的值对应的ASCII字符
*   `,`:从输入中读取一个字符,将其ASCII码存入指针指向的位置
*   `[`:当指针指向的内存的值为0时,跳转到对应`]`的后面
*   `]`:当指针指向的内存的值不为0时,跳转到对应`[`的后面

知道了这些符号的意义,你是不是有点明白刚才的程序了呢?我可没有。

请使用Brainfuck编写一个程序,求两个三位正整数A和B的和。

Brainfuck解释器的规格如下:

*   内存元素的数量为1024,指针取值范围为大于等于0且小于1024的整数。
*   每个内存元素的值和指针都初始为0。
*   当指针或内存值变为下限时减1,会被替换为上限的值。超过上限也是同样的处理。
*   如果找不到对应的`]`或`[`的跳转目标,则输出错误并退出。
*   执行`,`操作时如果输入字符不存在,则输出错误并退出。
*   所有8种操作的总执行次数超过$2^{20}$次时,输出错误并退出。

所需字符的ASCII码列表:

```plain
'0' … 48
'1' … 49
'2' … 50
'3' … 51
'4' … 52
'5' … 53
'6' … 54
'7' … 55
'8' … 56
'9' … 57```

### 约束条件

*   $A$和$B$是小于1000的正整数。
*   $A$和$B$在每个测试用例中是随机生成的。

* * *

### 输入格式

本问题未直接给定输入,但输出的Brainfuck程序将以以下格式给出$A$和$B$。

$A$ $B$

如果它们不满足三位数的要求,前面会添加0。例如,`48`被输入为`048`,`7`被输入为`007`。另外,$A$和$B$之间有一个半角空格。

### 输出格式

输出一个Brainfuck源代码,用于计算$A$和$B$的和**(只输出一行)**。**除了末尾之外,不能包含换行或空格。**此外,Brainfuck程序的输出可以以0开头,但必须是一个连续的字符串,长度不超过4个字符。

* * *

### 解说

[解说](https://img.atcoder.jp/iroha2019-day3/editorial-K.pdf)