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 个字符。
Bajtek 雇佣你来构建一个合适的指令序列。编写一个程序,对于给定的 $N$,输出生成高度为 $N$ 的金字塔的字符序列。我们假设笔最初位于金字塔的左下角。正如 IT 项目中常见的那样,你可以违反客户的要求。这意味着你的程序可以重复经过同一条线,或者(稍微)超过 150,000 个字符的限制,但这会让你付出代价——在这种情况下,你将获得更少的积分。具体的评分规则在“评分”部分给出。
输入格式
输入的第一行(也是唯一一行)包含一个整数 $n$ ($1 \le n \le 10^{18}$),表示金字塔的层数。
输出格式
输出的第一行(也是唯一一行)应包含一个长度不超过 150,000 的指令序列,该序列能正确构建一个由恰好 $n$ 层组成的金字塔。
评分
- 如果你的字符串正确且长度不超过 150,000 个字符,你将获得该测试组的满分。
- 如果你的程序绘制了某条边多次,你将无法获得该测试组的任何分数。
- 如果你的程序长度超过 150,000 个字符,你将无法获得该测试组的任何分数。
样例
样例输入 1
3
样例输出 1
2[FB]2DE2AECEAE3[C]A
说明
在 SIO2 系统的“文件”部分,你可以找到题目中提到的 narysuj.py 脚本。