你需要模拟一个公式编辑器。
公式内一共存在三种类型的元素:字符(数字,字母,括号和算术运算符),分式和矩阵。其中分式的分子和分母以及矩阵的所有单元格又各自是一个互不相同的公式且每个公式都有一个编辑框。

如图所示,F1、F2、F3、F4、F5 都是互不相同公式,所以都有各自的编辑框。
可以看到编辑框是可以嵌套的。如果框 A 直接包含框 B,那么我们就称框 A 是框 B 的父框(例如:F1 是 F2 和 F3 的父框,F3 是 F4 和 F5 的父框);如果框 A 和框 B 有相同的父框,我们说它们是同级框(例如:F4 和 F5 是同级框,F2 和 F3 也是同级框)。
在任何时候,光标总是直接包含在一个编辑框中。它可能位于框中所有元素的左侧(即编辑框的首部位置),也可能位于所有元素的右侧(即编辑框的尾部位置),或者位于两个连续元素之间。对于光标左侧(右侧)第一个元素(若存在),我们称之为光标的直接左侧(右侧)元素。
光标一共支持六种移动方式:Home,End,Up,Down,Left, Right。假设 A 是直接包含光标的编辑框,则:
Home(End):将光标移动至 A 的首部(尾部)位置。
Up(Down):如果 A 的正上方(下方)有一个同级框,则将光标放在该框的首部位置;否则查看 A 的父框,如果 A 的父框的正上方(下方)有一个同级框,则移至该框的首部位置,否则查看 A 的父框的父框...如果 A 的所有祖先框中都没有这样的同级框,不执行任何操作。
Left(Right):有四种情况。
输入文件包含多组数据,每行一个字符串。
Matrix(Fraction),则在光标处插入一个 1×1 的矩阵(分式),然后向右移动光标。请注意,在向右移动光标之前,新的矩阵(分式)位于光标的右侧。AddRow(AddCol),则找到包含光标的最小矩阵单元格并在其上方(左侧)插入一行(列),再将光标放置在新行(列)的同一列(行)中。如果没有包含光标的矩阵单元格,则忽略此命令。Home,End,Up,Down,Left,Right 中的一个,则根据上面的规则移动光标。Done,表示一组数据输入结束。对于每组输入数据你需要在第一行打印用例编号,再在换行后输出一个字符矩阵表示公式(每行末尾没有空格,但不要省略空行,例如:在样本输出 3 的末尾有一个空行),再在最后输出一个空行。字符矩阵是所有元素的字符矩阵的水平连接,公式内直接包含的分式、矩阵的基线与公式基线对齐(稍后将解释)。连续元素之间没有空格,内部矩形和外部矩形的边界之间没有额外的空行或者空列。公式中每个元素的字符矩阵:
' - ' 来表示字符 '-'。在水平对齐字符矩阵时,我们会固定最宽矩阵的位置,并尝试移动其他矩矩阵,以便它们与最宽矩形的中心列重合。如果对不齐(宽度奇偶性不同的矩阵),可以将这些向左移动 21 个单位,比如这样:
XXXX
------
XXX
有一种特殊情况:如果一个公式为空,则字符矩阵为一个空行,其宽度为零,但高度为一。
-
5
Fraction
1
Down
6
Right
*
Matrix
AddCol
AddCol
1
Right
2
Right
3
Right
*
Matrix
AddRow
AddRow
1
Down
2
Down
3
Done
1
+
Fraction
1
Down
1
+
Fraction
1
Down
1
+
Fraction
1
Down
x
Up
Up
Right
Right
Home
Up
Done
Fraction
a
Done
Matrix
Fraction
a
Down
b
Matrix
Fraction
c
Down
d
AddRow
e
Done
Case 1:
[1]
1
- 5---*[1 2 3]*[2]
6
[3]
Case 2:
1
1+-----------
1
1+-------
1
1+---
x
Case 3:
a
---
Case 4:
a
[--------]
[ e ]
b
c
[---]
d
每个测试用例中最多有 1000 个命令,并且整个输入大小不超过 200KB。
得出的公式在数学上并不一定正确。输出格式必须严格按照题目要求。