Inversion SwapSort

题意翻译

给定一个长度为 $n$ 的序列 $a$,求 $a$ 中的所有逆序对 $(i_1, j_1), (i_2, j_2), \cdots, (i_m, j_m)$ 的一个排列 $p$, 使得依次交换 $(a_{i_{p_1}}, a_{j_{p_1}}), (a_{i_{p_2}}, a_{j_{p_2}}), \cdots, (a_{i_{p_m}}, a_{j_{p_m}})$ 后序列单调不降。 $1 \le n \le 10^3$,$1 \le a_i \le 10^9$。

题目描述

Madeline has an array $ a $ of $ n $ integers. A pair $ (u, v) $ of integers forms an inversion in $ a $ if: - $ 1 \le u < v \le n $ . - $ a_u > a_v $ . Madeline recently found a magical paper, which allows her to write two indices $ u $ and $ v $ and swap the values $ a_u $ and $ a_v $ . Being bored, she decided to write a list of pairs $ (u_i, v_i) $ with the following conditions: - all the pairs in the list are distinct and form an inversion in $ a $ . - all the pairs that form an inversion in $ a $ are in the list. - Starting from the given array, if you swap the values at indices $ u_1 $ and $ v_1 $ , then the values at indices $ u_2 $ and $ v_2 $ and so on, then after all pairs are processed, the array $ a $ will be sorted in non-decreasing order. Construct such a list or determine that no such list exists. If there are multiple possible answers, you may find any of them.

输入输出格式

输入格式


The first line of the input contains a single integer $ n $ ( $ 1 \le n \le 1000 $ ) — the length of the array. Next line contains $ n $ integers $ a_1,a_2,...,a_n $ $ (1 \le a_i \le 10^9) $ — elements of the array.

输出格式


Print -1 if no such list exists. Otherwise in the first line you should print a single integer $ m $ ( $ 0 \le m \le \dfrac{n(n-1)}{2} $ ) — number of pairs in the list. The $ i $ -th of the following $ m $ lines should contain two integers $ u_i, v_i $ ( $ 1 \le u_i < v_i\le n $ ). If there are multiple possible answers, you may find any of them.

输入输出样例

输入样例 #1

3
3 1 2

输出样例 #1

2
1 3
1 2

输入样例 #2

4
1 8 1 6

输出样例 #2

2
2 4
2 3

输入样例 #3

5
1 1 1 2 2

输出样例 #3

0

说明

In the first sample test case the array will change in this order $ [3,1,2] \rightarrow [2,1,3] \rightarrow [1,2,3] $ . In the second sample test case it will be $ [1,8,1,6] \rightarrow [1,6,1,8] \rightarrow [1,1,6,8] $ . In the third sample test case the array is already sorted.