Problem: 2052A - Adrenaline Rush
Language: C++20 (GCC 13-64)

Previous submission (verdict: Wrong answer on test 7):
#define istolethisfrom_rayano ios::sync_with_stdio(0), std::cin.tie(0), std::cout.tie(0);
#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
using namespace std;
#define all(x) (x).begin(), (x).end()
typedef long long ll;
typedef long double ld;
typedef __int128 vl;
typedef vector<int> vint;
typedef vector<ll> vll;
typedef vector<vl> vvl;
typedef vector<char> vchr;
typedef vector<string> vstr;
typedef vector<bool> vbl;
typedef pair<int, int> pint;
typedef pair<ll, ll> pll;
typedef vector<pint> vpint;
typedef vector<pll> vpll;

using namespace __gnu_pbds;
typedef tree<int, null_type, less<int>, rb_tree_tag, tree_order_statistics_node_update> ordered_set;

constexpr ll MOD = 998244353;
constexpr ll oo = 1e18 + 7;
constexpr int NN = 1e6 + 7;
constexpr int MAXINT = 2147483647; //INT_MAX
constexpr ll MAXLL = 1e17; //LLONG_MAX

using namespace std;
bool enabled = false;


void amogus() {
	
	int n; cin >> n;
	vll vect(n);
	for(ll& x : vect) cin >> x;
	
	vll v(n);
	for(int i = 1; i <= n; i++){
		v[i - 1] = i;
	}
	
	vpll ans;
	for(int i = 1; i < n; i++){
		for(int j = i - 1; j >= 0; j--){
			ans.push_back({v[j + 1], v[j]});
			swap(v[j + 1], v[j]);
		}
	}
	
	for(int i = 0; i < 2 * n; i++){
		for(int j = 0; j < n - 1; j++){
			if(v[j] != vect[j]){
				ans.push_back({v[j + 1], v[j]});
				swap(v[j + 1], v[j]);
			}
		}
	}
	
	cout << ans.size() << "\n";
	for(auto [a, b] : ans) cout << a << " " << b << "\n";
    
}

/*
                       -####*             :####*
                       %@@@@=             #@@@@+
                      =@@@@%             -@@@@@
                      @@@@@:             %@@@@=
                     =@@@@*             -@@@@%
                     @@@@@.             %@@@@-
                    +@@@@*             =@@@@#
           :########@@@@@%#############@@@@@%###################################
           %@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+
          :#######%@@@@@#############%@@@@@##############@@@@@%################
                  #@@@@+             +@@@@*              @@@@@:
                 :@@@@@             .@@@@@.             +@@@@*
                 %@@@@=             *@@@@+              @@@@@.
                -@@@@%             :@@@@@              +@@@@+
                %@@@@=             #@@@@+             .@@@@@.
               =@@@@%             :@@@@@              #@@@@+
               =%%%%:             -%%%%-             :@@@@@
                                                     %@@@@=
                                                    -@@@@@
                                                    %@@@@=
                                                   -@@@@%
                                                   %@@@@-
                                                  =@@@@%
                                                  @@@@@-
                                                 =@@@@#
                                                 -%%%%-
*/
int main() {
    istolethisfrom_rayano;

	/*
    #ifndef ONLINE_JUDGE
    freopen("input.txt", "r", stdin);
    freopen("output.txt", "w", stdout);
    #endif
	*/


 	//sieve();
 	//gen();

    int tc = 1;
    if (enabled)
        cin >> tc;

    while (tc--) {
        amogus();
    }

    return 0;
}

Submission (verdict: Accepted):
#define istolethisfrom_rayano ios::sync_with_stdio(0), std::cin.tie(0), std::cout.tie(0);
#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
using namespace std;
#define all(x) (x).begin(), (x).end()
typedef long long ll;
typedef long double ld;
typedef __int128 vl;
typedef vector<int> vint;
typedef vector<ll> vll;
typedef vector<vl> vvl;
typedef vector<char> vchr;
typedef vector<string> vstr;
typedef vector<bool> vbl;
typedef pair<int, int> pint;
typedef pair<ll, ll> pll;
typedef vector<pint> vpint;
typedef vector<pll> vpll;

using namespace __gnu_pbds;
typedef tree<int, null_type, less<int>, rb_tree_tag, tree_order_statistics_node_update> ordered_set;

constexpr ll MOD = 998244353;
constexpr ll oo = 1e18 + 7;
constexpr int NN = 1e6 + 7;
constexpr int MAXINT = 2147483647; //INT_MAX
constexpr ll MAXLL = 1e17; //LLONG_MAX

using namespace std;
bool enabled = false;


void amogus() {
	
	int n; cin >> n;
	vll vect(n);
	for(ll& x : vect) cin >> x;
	
	vll v(n);
	for(int i = 1; i <= n; i++){
		v[i - 1] = i;
	}
	
	vpll ans;
	for(int i = 1; i < n; i++){
		for(int j = i - 1; j >= 0; j--){
			ans.push_back({v[j + 1], v[j]});
			swap(v[j + 1], v[j]);
		}
	}
	
	vll pos(n + 1);
	for(int i = 0; i < n; i++){
		pos[vect[i]] = i;
	}
	
	for(int i = n - 2; i >= 0; i--){
		while(pos[v[i]] > i){
			ans.push_back({v[i + 1], v[i]});
			swap(v[i + 1], v[i]);
			i++;
		}
	}
	
	cout << ans.size() << "\n";
	for(auto [a, b] : ans) cout << a << " " << b << "\n";
    
}

/*
                       -####*             :####*
                       %@@@@=             #@@@@+
                      =@@@@%             -@@@@@
                      @@@@@:             %@@@@=
                     =@@@@*             -@@@@%
                     @@@@@.             %@@@@-
                    +@@@@*             =@@@@#
           :########@@@@@%#############@@@@@%###################################
           %@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+
          :#######%@@@@@#############%@@@@@##############@@@@@%################
                  #@@@@+             +@@@@*              @@@@@:
                 :@@@@@             .@@@@@.             +@@@@*
                 %@@@@=             *@@@@+              @@@@@.
                -@@@@%             :@@@@@              +@@@@+
                %@@@@=             #@@@@+             .@@@@@.
               =@@@@%             :@@@@@              #@@@@+
               =%%%%:             -%%%%-             :@@@@@
                                                     %@@@@=
                                                    -@@@@@
                                                    %@@@@=
                                                   -@@@@%
                                                   %@@@@-
                                                  =@@@@%
                                                  @@@@@-
                                                 =@@@@#
                                                 -%%%%-
*/
int main() {
    istolethisfrom_rayano;

	/*
    #ifndef ONLINE_JUDGE
    freopen("input.txt", "r", stdin);
    freopen("output.txt", "w", stdout);
    #endif
	*/


 	//sieve();
 	//gen();

    int tc = 1;
    if (enabled)
        cin >> tc;

    while (tc--) {
        amogus();
    }

    return 0;
}