在使用简单的文本编辑器时,用户经常需要以特定的方式重新排列行。如果行很长,并且需要减少错误,最简单的方法就是将文本块从一个地方移动到另一个地方(即“剪切/粘贴”方法)。你是一个高效的程序员。请确定以所需方式重新排列这些行所需的最少时间。
该文件包含 $N$ 行文本。编辑器有一个光标,共有 $N + 1$ 个可能的位置:文本第一行之前、文本最后一行之后,以及任意两相邻行之间。按“up”或“down”键分别将光标向上或向下移动一行。你不能将光标移动到文本之外。
Shift 键用于选择行。按下 Shift 键时,编辑器会记住当前的光标位置;释放 Shift 键时,编辑器会选择当前光标位置与记住的位置之间的所有行。释放 Shift 键后,你必须按下 Ctrl+X 来剪切选中的行,即将其复制到剪贴板并同时从文本中删除。要将剪贴板中剪切的文本片段粘贴(插入)回去,请在使用“up”和“down”键将光标移动到所需位置后,按下 Ctrl+V。粘贴后,该文本片段将从剪贴板中移除。当剪切文本片段时,所有后续行会自动向上移动;当粘贴文本片段时,它们会向下移动。因此,文本中永远不会有空行。当剪切片段时,光标会向上移动到剪切片段开始的位置,除非它已经在那里;当粘贴片段时,光标会向下移动,并最终停在刚插入的文本之后。
每项操作都需要花费一定的预设时间,这取决于用户的熟练度。最初,光标位于文本第一行之前。
输入格式
输入的第一行包含一个整数 $N$,表示文本编辑器中的行数($2 \le N \le 8$)。在第二行中给出六个整数,定义每项操作需要多少毫秒($1 \le t_i \le 100$)。操作列表在下方给出。
第三行中的 $N$ 个整数定义了行的初始顺序。它们互不相同,且在 $1$ 到 $N$ 的范围内。第四行中的 $N$ 个整数定义了最终行必须排列的顺序。它们也互不相同,且在 $1$ 到 $N$ 的范围内。
输出格式
在输出的第一行打印两个整数:$T$ 表示执行该计划的总时间(以毫秒为单位),$K$ 表示计划中的操作数。接下来,按照执行顺序打印 $K$ 个操作,每行一个操作。操作描述如下:
Up— 按“up”(花费 $t_1$ 毫秒)。Down— 按“down”(花费 $t_2$ 毫秒)。Shift-Press— 按下并保持 Shift(花费 $t_3$ 毫秒)。Shift-Release— 释放 Shift(花费 $t_4$ 毫秒)。Ctrl+X— 按组合键 Ctrl+X(花费 $t_5$ 毫秒)。Ctrl+V— 按组合键 Ctrl+V(花费 $t_6$ 毫秒)。
样例
输入样例 1
6 99 98 100 97 99 98 1 2 3 4 5 6 6 5 4 3 2 1
输出样例 1
3252 33 Shift-Press Down Down Shift-Release Ctrl+X Down Down Ctrl+V Shift-Press Down Shift-Release Ctrl+X Down Ctrl+V Shift-Press Up Up Up Shift-Release Ctrl+X Up Up Ctrl+V Down Shift-Press Up Up Up Shift-Release Ctrl+X Up Up Ctrl+V
说明
在样例中,你需要将六行文本反转。每个操作需要 100 毫秒或稍少一些。最优方案已记录在一个动画 GIF 图像中,你可以在本题题目文件附近下载。