#CF2039H1. 酷炫交换行走(简单版)

酷炫交换行走(简单版)

H1. 酷炫交换行走(简单版)
每次测试时间限制:2 秒
内存限制:256 兆字节

这是该问题的简单版本。唯一的不同点在于你可以执行的最大操作次数。只有两个版本都解决时,你才能进行破解。

你有一个大小为 nn 的数组 aa

酷炫交换行走定义如下过程:

在一个 n×nn \times n 的网格中,我们用 (i,j)(i,j) 表示第 ii 行第 jj 列的格子。你需要从 (1,1)(1,1) 走到 (n,n)(n,n)每次只能向右或向下走一步
形式化地说,如果你当前在 (x,y)(x,y),你可以走到 (x+1,y)(x+1,y)(x,y+1)(x,y+1),但不能走出网格边界。
当你踏入格子 (i,j)(i,j) 时,如果 iji \neq j,你必须交换 aia_iaja_j

你可以执行最多 2n+42n+4 次酷炫交换行走。目标是将数组 a1,a2,,ana_1, a_2, \dots, a_n非递减顺序排序。可以证明,总是可以做到的。


输入

第一行包含一个整数 tt1t1041 \le t \le 10^4)——测试用例的数量。

每个测试用例的第一行包含一个整数 nn2n5002 \le n \le 500)——数组的大小。

每个测试用例的第二行包含 nn 个整数 a1,a2,,ana_1, a_2, \dots, a_n1ain1 \le a_i \le n)——数组的元素。

保证所有测试用例的 n2n^2 之和不超过 2.5×1052.5 \times 10^5


输出

对于每个测试用例,输出应包含若干行:

  • 第一行包含一个整数 kk0k2n+40 \le k \le 2n+4),表示你执行的酷炫交换行走的次数。
  • 接下来的 kk 行,每行包含一个长度为 2n22n-2 的字符串 ss,由 RRDD 组成,表示一条路径(字母区分大小写)。对于所有 1i2n21 \le i \le 2n-2,如果 sis_iRR,表示在第 ii 步向右走;如果是 DD,表示在第 ii 步向下走。

示例

输入

3
2
1 2
3
2 1 3
4
3 2 3 4

输出

0
2
RRDD
DRDR
3
RRDRDD
DRDDRR
DDRRRD

说明

在第一个测试用例中,数组 aa 已经是非递减的,因此不需要执行任何行走。

在第二个测试用例中,初始 a=[2,1,3]a = [2,1,3]

第一次行走

  • 11 步,向右走到 (1,2)(1,2)。此时 a=[1,2,3]a = [1,2,3]。注意虽然数组已非递减,但必须走到 (n,n)(n,n) 才能结束。
  • 22 步,向右走到 (1,3)(1,3)。此时 a=[3,2,1]a = [3,2,1]
  • 33 步,向下走到 (2,3)(2,3)。此时 a=[3,1,2]a = [3,1,2]
  • 44 步,向下走到 (3,3)(3,3)。此时 a=[3,1,2]a = [3,1,2]

第二次行走

  • 11 步,向下走到 (2,1)(2,1)。此时 a=[1,3,2]a = [1,3,2]
  • 22 步,向右走到 (2,2)(2,2)。此时 a=[1,3,2]a = [1,3,2]
  • 33 步,向下走到 (3,2)(3,2)。此时 a=[1,2,3]a = [1,2,3]
  • 44 步,向下走到 (3,3)(3,3)。此时 a=[1,2,3]a = [1,2,3]

经过以上两次酷炫交换行走,得到 a=[1,2,3]a = [1,2,3],已排序。