#P8910. [RC-06] Operation Sequence

[RC-06] Operation Sequence

题目描述

给出 nn,以及一个长度为 n+1n+1 的数组 [a1,a2,…,an+1][a_1,a_2,\dots,a_{n+1}],初始时 ai=i (1≤i≤n)a_i=i\ (1\le i\le n),an+1=0a_{n+1}=0。

你只能进行以下一种操作,通过输出特定字符串完成操作:

  • 输出 i j :其中 i,ji,j 为正整数,要求 1≤i,j≤n+11\le i,j\le n+1,表示把 aia_i 赋值为 aja_j。

请把 aa 数组的前 nn 位向右循环移位 KK 位;即,在执行完毕你输出的所有操作后,要求 aa 数组第 i (1≤i≤K)i\ (1\le i\le K) 位等于 n−K+in-K+i;第 i (K+1≤i≤n)i\ (K+1\le i\le n) 位等于 i−Ki-K,第 n+1n+1 位任意。你只能进行至多 T=⌊1.5n⌋T=\lfloor1.5n\rfloor 次赋值操作。

如果你进行的操作数多于 TT 也可以获得部分分,具体地,设你的操作次数为 SS:

  • 如果 S≤TS\le T,得 100100 分。
  • 如果 T<S≤4TT<S\le 4T,得 5050 分。
  • 如果 S>4TS>4T,得 00 分。

你在本题的得分是所有测试点中所有数据里得分的最小值。

输入格式

本题单个测试点内有多组数据。

第一行是数据组数 TT。

对于每组数据:

第一行两个正整数 n,Kn,K。

输出格式

对于每组数据:

在第一行输出操作数 k (0≤k≤4T)k\ (0\le k\le 4T)。请注意,不需要最小化 kk。

接下来 kk 行,每行输出两个正整数 i,ji,j,表示一次操作。(1≤i,j≤n+1)(1\le i,j\le n+1)

2
3 0
2 1
0
3
3 1
1 2
2 3

提示

所有数据均满足:1≤T≤1041\le T\le 10^4,1≤n≤1051\le n\le 10^5,0≤K≤n−10\le K\le n-1。保证同一个测试点中所有 nn 的和不超过 5×1055\times 10^5。