#arc147b. [arc147_b]Swap to Sort

[arc147_b]Swap to Sort

题目描述

给定一个排列 P=(P1,P2,ldots,PN)P=(P_1,P_2,\\ldots,P_N)PP(1,2,ldots,N)(1,2,\\ldots,N) 的一个重排列。

你可以按任意顺序重复执行以下两种操作,以使 PP 按升序排序:

  • 操作 AA:选择一个整数 ii ,使得 1leqileqN11 \\leq i \\leq N-1 ,并交换 PiP_iPi+1P_{i+1}

  • 操作 BB:选择一个整数 ii ,使得 1leqileqN21 \\leq i \\leq N-2 ,并交换 PiP_iPi+2P_{i+2}

求一个满足以下条件的操作序列:

  • 操作 AA 的次数是最小可能值。

  • 总操作次数不超过 10510^5

在此问题的约束下,我们可以证明总是存在解。

约束条件

  • 2leqNleq4002 \\leq N \\leq 400
  • 1leqPileqN,(1leqileqN)1 \\leq P_i \\leq N \\,(1 \\leq i \\leq N)
  • PineqPj,(1leqi<jleqN)P_i \\neq P_j \\,(1 \\leq i < j \\leq N)
  • 输入中的所有值均为整数。

输入

从标准输入读取输入数据,输入格式如下:

NN

P1P_1 P2P_2 ldots\\ldots PNP_N

输出

设答案中操作的次数为 SS ,输出 S+1S+1 行。

第一行应该包含 SS

(s+1)(s+1) 行(1leqsleqS1 \\leq s \\leq S)应该包含以下内容:

  • 如果第 ss 个操作是操作 AA ,并且在此操作中选择的整数为 ii ,则输出 A i

  • 如果第 ss 个操作是操作 BB ,并且在此操作中选择的整数为 ii ,则输出 B i

如果有多个满足条件的解,你可以输出任何一个。


示例输入1

4
3 2 4 1

示例输出1

4
A 3
B 1
B 2
B 2

在这个示例中,PP 的变化如下:$(3,2,4,1) \\rightarrow (3,2,1,4) \\rightarrow (1,2,3,4) \\rightarrow (1,4,3,2) \\rightarrow (1,2,3,4)$。

注意你不必使总操作次数最小。


示例输入2

3
1 2 3

示例输出2

0

示例输入3

6
2 1 4 3 6 5

示例输出3

3
A 1
A 3
A 5