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


Submission (verdict: Wrong answer on test 4):
#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;
	}
	
	set<pair<ll, ll>> s;
	vector<pll> ans;
	
	for(int j = 0; j < n * 2; j++){
		for(int i = 0; i < n - 1; i++){
			if(vect[i] != v[i]){
				s.insert({min(v[i], v[i + 1]), max(v[i], v[i + 1])});
				swap(v[i], v[i + 1]);
				ans.push_back({v[i], v[i + 1]});
			}
		}
	}
	
	/*
	for(auto& x : v){
		cout << x << " ";
	}
	*/
	
	for(int i = 0; i < n - 1; i++){
		if(s.find({min(v[i], v[i + 1]), max(v[i], v[i + 1])}) == s.end()){
			s.insert({min(v[i], v[i + 1]), max(v[i], v[i + 1])});
			ans.push_back({v[i + 1], v[i]});
			ans.push_back({v[i], v[i + 1]});
		}
	}
	
	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;
}