logo AlgoBeat OnlineJudge
登录 注册

#216278. [ICPC 2023 Jinan R] 奇怪的排序

内存限制:1024 MiB 时间限制:1000 ms 标准输入输出
题目类型:VJudge(洛谷) 评测方式:VJudge
上传者: 匿名

题目描述

:::epigraph[Stanley P. Y. Fung. Is this the simplest (and most surprising) sorting algorithm ever? arXiv:2110.01111] 我们给出了一个极其简单的排序算法。它看上去显然是错的,但我们证明了它事实上是对的。 :::

在学习了 2021 国际大学生程序设计竞赛亚洲区域赛南京站的《Paimon Sorting》一题中奇怪的排序算法后,小青鱼想到了如下的一个问题。

给定序列 表示一个 的排列,您需要将该排列按升序排序,为此可以执行以下操作至多 次:选择两个下标 满足 以及 ,将 按升序进行排序。

请回忆:一个 的排列是一个长度为 的序列,每个从 (含两端)的整数在其中都恰好出现一次。另外, 表示小于等于 的最大的整数。

输入格式

有多组测试数据。第一行输入一个整数 表示测试数据组数,对于每组测试数据:

第一行输入一个整数 )表示排列的长度。

第二行输入 个不同的整数 )表示给定的排列。

保证所有数据 之和不超过

输出格式

对于每组数据,首先输出一行一个整数 )表示您执行的操作次数。接下来输出 行,其中第 行输出两个由单个空格分隔的整数 ,表示您为第 次操作选择的两个下标。

可以证明答案总是存在。如果有多种合法答案,您可以输出任意一种。

样例

样例输入 1

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

样例输出 1

2
3 6
1 3
0
1
1 3

数据范围与提示

对于第一组样例数据,在第 次操作后排列变为 ,在第 次操作后排列变为 ,此时排列是升序的。