#P14482. [2025年广东省队集训]栈

[2025年广东省队集训]栈

问题描述

有三个栈 S1,S2,S3S_1, S_2, S_3。初始 S1S_1 中有 nn 个数,自顶向下依次是 p1,p2,,pnp_1, p_2, · · · , p_n,保证 pp 是一个排列。S2S_2S3S_3 初始为空。

你可以进行两种操作:

  1. 选择一个正整数 xAx ≤ A,将 S1S_1 栈顶的 xx 个数作为一个整体弹出,并按原来的顺序放进 S2S_2

  2. 选择一个正整数 xBx ≤ B,将 S2S_2 栈顶的 xx 个数作为一个整体弹出,并按原来的顺序放进 S3S_3

其中 AABB 是给定的正整数。

你需要让最终 S3S_3 中的数自顶向下依次是 1,2,,n1, 2, · · · , n。构造一种合法的方案,或者输出无解。

输入格式

本题有多组测试数据

输入的第一行包含一个正整数 TT,表示数据测试组数。接下来输入每组测试数据。

对于每组测试数据,第一行三个正整数 n,A,Bn, A, B,第二行 nn 个正整数 p1,p2,,pnp_1, p_2, · · · , p_n

含义见题目描述。

输出格式

对于每组测试数据:

如果无解,输出一行 1‐1

否则,第一行输出一个整数 mm,表示你构造的方案的操作次数。

接下来 mm 行,每行两个正整数 p,xp, x,表示执行第 pp 种操作,选择的正整数是 xx

你只需给出任意一种方案即可

输入样例

3
3 2 1
2 1 3
7 7 7
1 3 5 4 2 7 6
4 2 2
3 2 1 4

输出样例

5
1 2
1 1
2 1
2 1
2 1
11
1 1
1 1
1 3
1 1
2 1
1 1
2 1
2 1
2 1
2 2
2 1
‐1

数据范围

对于所有数据,保证 n1n ≥ 1n106∑n ≤ 10^6。保证 1A,Bn1 ≤ A, B ≤ npp 是排列。

测试点 n\sum n\leq A=nA=n B=nB=n
1,21,2 1010
353\sim 5 2020
686\sim 8 20002000
9,109,10 10610^6
11,1211,12 20002000
1313 10610^6
14,1514,15 20002000
1616 10610^6
17,1817,18 20002000
19,2019,20 10610^6

提示

本题输入输出量较大,请采用较为快速的输入输出方式。