Bajtek 决定画一个由三角形组成的金字塔,如下图所示:
Bajtek 想要画的金字塔由 $N$ 层组成。最底层包含 $2N-1$ 个三角形,它们交替地尖端向上和尖端向下排列。每一层上方也以同样的方式放置三角形,但每一层比下一层少两个三角形。因此,上图展示了 $N=3$ 的情况。
Bajtek 有一个程序,允许他在屏幕上绘制类似的图形。屏幕上的一个点放置了一支笔,它可以在不同的角度绘制直线。Bajtek 的程序接受字母 A 到 F 作为指令——每个字母代表笔向可能的方向之一移动并绘制一段线段,具体遵循下图:
例如,指令序列 FBBBFBFBFBFBBBFBFBFB 将绘制出如下的折线:
Bajtek 程序的新版本允许接受更复杂的指令:除了字母外,还可以使用数字,表示某个指令序列的多次重复。具体来说:
- 形如 $kZ$ 的字符串,其中 $k \in \{1, 2, 3, 4, 5, 6, 7, 8, 9\}$ 且 $Z \in \{A, B, C, D, E, F\}$,表示与 $Z\dots Z$($k$ 个字母 $Z$)相同;
- 形如 $k[S]$ 的字符串,其中 $k \in \{1, 2, 3, 4, 5, 6, 7, 8, 9\}$,$S$ 是某个字符串,表示与 $S\dots S$($k$ 个字符串 $S$)相同;字符串 $S$ 本身也可以包含进一步的数字结构。
例如,3[2A] 等于 AAAAAA,而上图中的折线也可以通过更短的字符串实现,例如 F3B3[FB]F3B3[FB],2[F3BFBFBFB] 甚至 2[F3B3[FB]]。请注意,其中 $k$ 大于 9 的字符串(如 10A 或 58[AB])是不允许的。
回到 Bajtek 的第一个金字塔。Bajtek 希望用他的程序指令序列来实现它。他有一个额外的条件:他希望笔永远不要在同一条线上重复绘制(由于程序中的一个小 bug,重复绘制会导致线条稍微变粗,这让 Bajtek 的审美感到不适)。例如,字符串 2[FBD] 违反了这一原则——三角形的每一条边都会被绘制两次。Bajtek 的第二个要求是程序长度不超过 150,000 个字符。
青少年信息学奥林匹克(OIJ)是面向初学者的比赛,因此原题中对金字塔高度的限制非常低。然而,在 Potyczki Algorytmiczne 中参赛的是专业选手,我们期望大家能够使用长度不超过 150,000 的指令序列,构建出高度达 $10^{18}$ 层的金字塔。
本题的任务说明与 OIJ 的原题基本相同,但有以下几点重要区别:
- 我们不强制要求笔的初始位置在金字塔的左下角(你可以从任意点开始)。
- 如果你的指令序列长度超过 150,000 个字符,你将无法获得该测试点的任何分数(直接得 0 分)。
- 如果你的笔多次绘制了同一条线段,你将无法获得该测试点的任何分数(直接得 0 分)。
注意:在 OIJ 官网上也可以找到该题的解题思路简述。但我们不保证其中的信息对解决本题(专业版)有任何帮助。
输入格式
输入的第一行(也是唯一一行)包含一个整数 $n$ ($1 \le n \le 10^{18}$),表示金字塔的层数。
输出格式
输出的第一行(也是唯一一行)应包含一个长度不超过 150,000 的指令序列,该序列能正确构建一个由恰好 $n$ 层组成的金字塔。
样例
输入格式 1
3
输出格式 1
2[FB]2DE2AECEAE3[C]A
说明
在 SIO2 系统的“文件”部分,你可以找到题目中提到的 OIJ 脚本 narysuj.py。