电子表格中的数据存储在单元格中,这些单元格按行 ($r$) 和列 ($c$) 排列。对电子表格的一些操作可以应用于单个单元格 $(r, c)$,而另一些操作则可以应用于整行或整列。典型的单元格操作包括插入和删除行或列,以及交换单元格内容。
一些电子表格允许用户标记一组行或列进行删除,从而可以一次性删除整个集合。一些(不常见的)电子表格还允许用户标记一组行或列进行插入。发出插入命令会导致在每个标记的行或列之前插入新的行或列。
例如,假设用户标记了左侧电子表格的第 1 行和第 5 行进行删除,然后标记了第 3、6、7 和 9 列进行删除,电子表格将缩小为右侧的电子表格:
如果用户标记了第 2、3 和 5 行进行插入,然后标记了第 3 列进行插入,电子表格将增长为下方所示:
现在,有人通过执行若干插入、删除和交换操作(详细说明如下)损坏了您的电子表格。
您的任务是计算保留(未删除)的单元格数量,以及原始单元格与其最终位置之间的总距离。如果一个位于 $(x_1, y_1)$ 的单元格移动到了 $(x_2, y_2)$,则总距离增加 $|x_1-x_2|+|y_1-y_2|$。您还需要确定一些重要数据的最终位置。
输入格式
输入由一系列电子表格、对这些电子表格的操作以及关于它们的查询组成。每个电子表格的定义以一对整数开始,指定其初始行数 ($r$) 和列数 ($c$),随后是一个整数,指定电子表格操作的数量 ($n$)。行和列的编号从 1 开始。接下来的 $n$ 行指定了所需的操作。$1 \le r, c \le 5000$,$1 \le n \le 50$。在任何时候至少会有一行和一列。
交换单元格 $(r_1, c_1)$ 和 $(r_2, c_2)$ 内容的操作由以下命令给出:EX r1 c1 r2 c2。四种插入和删除命令——DC(删除列)、DR(删除行)、IC(插入列)和 IR(插入行)由以下格式给出:
<command> A x1 x2 ... xA,其中 <command> 是四种命令之一;$A$ 是一个不大于 5 的正整数,$x_1, \dots, x_A$ 是要删除或在其之前插入的列或行的编号。对于每个插入和删除命令,命令中行或列的顺序没有意义。在单个删除或插入命令中,编号是唯一的。
操作之后是一个整数 $Q$ ($Q \le 10000$),它是该电子表格的查询数量。每个查询由正整数 $r$ 和 $c$ 组成,代表原始电子表格中单元格的行号和列号。对于每个查询,您的程序必须确定最初位于单元格 $(r, c)$ 中的数据的当前位置。
输入的结束由一行包含一对零的电子表格维度表示。
输出格式
对于每个电子表格,您的程序必须输出其序列号(从 1 开始)。在下一行中,您的程序必须输出保留的单元格数量和总移动距离。
对于每个查询,您的程序必须输出原始单元格位置,后跟数据的最终位置,或者如果原始单元格位置的内容因操作而被销毁,则输出单词 GONE。
不同电子表格的输出之间请用空行分隔。
样例
样例输入 1
7 9 5 DR 2 1 5 DC 4 3 6 7 9 IC 1 3 IR 2 2 4 EX 1 2 6 5 4 4 8 5 5 7 8 6 5 0 0
样例输出 1
Spreadsheet #1 There are 25 cell(s) kept, total distance = 29 Cell data in (4,8) moved to (4,6) Cell data in (5,5) GONE Cell data in (7,8) moved to (7,6) Cell data in (6,5) moved to (1,2)