Problem: 2052A - Adrenaline Rush
Language: c++17 

Solution 1 (runtime: 249 ms):
// author: 0saurav0
#include <bits/stdc++.h>
#define rep(i, n) for (int i = 0; i < (n); ++i)
#define repA(i, a, n) for (int i = a; i <= (n); ++i)
#define repD(i, a, n) for (int i = a; i >= (n); --i)
#define tr(a, x) for (auto &a : x)
#define all(c) c.begin(), c.end()

#define lld long long
#define pb push_back
#define mp make_pair
#define eb emplace_back
#define f first
#define s second
#define sz(a) int((a).size())
#define present(c, x) (c.find(x) != c.end())
#define cpresent(c, x) (find(all(c), x) != c.end())

#define vi vector<lld>
#define si set<lld>
#define endl "\n"
#define pii pair<int, int>
#define minq priority_queue<int, vector<int>, greater<int>>
#define mem(a, val) memset(a, val, sizeof(a))
#define scani(x) scanf("%lld", &x)
#define scani2(x, y) scanf("%lld %lld", &x, &y)
#define scani3(x, y, z) scanf("%lld %lld %lld", &x, &y, &z);
#define print(x) printf("%lld ", x)
#define println(x) printf("%lld\n", x)
#define SpeedForce ios_base::sync_with_stdio(0), cin.tie(0), cout.tie(0)
#define MOD 1000000009

using namespace std;

int32_t main()
{
    SpeedForce;
    int t = 1; 
    // cin >> t;
    while(t--) {
        int n;
        cin>>n;
        vi v(n);
        vi nums(n+1);
        nums[0]=0;
        for(int i=0 ; i<n ; i++){
            cin>>v[i];
            nums[i+1]=i+1;
        }
        vector<pii> tota;
        int count=0;
        int tcount=0;
        for(int i=n-1; i>=0; i--){
            int num=-1;
            for(int j=0 ; j<=n ; j++){
                if(nums[j]==v[i]) num=j;
            }
            for(int j=num-1; j>0&&(j<n); j--){
                tota.pb(mp(nums[j+1],nums[j]));
                tcount++;
                swap(nums[j],nums[j+1]);
                // check=1;
            }
            
        }
        cout<<tcount<<endl;
        if(tcount){
            for(auto it=tota.begin();it!=tota.end(); it++){
                cout<<it->first<<" "<<it->second<<endl;
            }
        }
    }
    return 0;
}



/*
═══════════════════░▒░══════════════════
════════════▒▒▒▓███████████▓▒═══════════
════════▒██████████▓▓▓▓██▓████▓═════════
══════▒███████▓█▓▓▓█▓█▓███▓▓▓███════════
═════▓███▓██▓▓████▓██▓█▓▓▓███▓██▒═══════
═════▓██▓███▓█▓████████▓▓█████▓██═══════
═════▒█████████▓▓▓███████████████▒══════
═════▒██████▓█████▒▒▒▒▒██████████▒══════
═════▒███████▓█▓█▒═════░▒▓█▓▓▒▒██▒══════
═════▒█████████▓█▓░░▒▒░░░░░▒▒▒▒██▒══════
═════▒████████████▒░▒▒▒▒▒▒▒▒▒▒▒▓█▒══════
═════▒██████████▓▓▓▒▒▒▒▒▒▒▒▒▒▒░▓█▒══════
═════▒███████▓███▓▒▒▒▒▒▒▒▒▒▒▒▒░▒▓▒══════
═════▓█▒░░▓██▓█▓▒▒▒▒░░░░░░░░░░░▒█▒══════
═════▓█▒▒▒░▒███▒░░▒░░░▒▒▒▒▒█▓█████══════
═════██░▒██▒▒████▒░▓██████████████══════
═════▒█▒▒▒▓▒░▓█▓███████████▒▒█████══════
══════▒█═░░▒▒▒█▒▒▒▒█▓██████░═████═══════
═▒▓███▓██░░▒▒▒▒▒▒▒▒██████▓▒░░▒██▒═══════
██████████▓█▒▒▒▒▒▒▒▒█▓▒▒▒▒░░░═░█════════
█████████▓▓█▓▒▒▒▒▒▓▒▒▒▒▒▒▒▓▓▒░▒█════════
██████████▒▒▓▓▒▒▒▒▒▒▒▒▒▒░▒▓██▓▒█════════
▓▓█▓████▓▒▒▒▒▓▓▒▒▒▒▒▒▒▒▒▓▒▒▒▓▓▓██═══════
██▓▒██▒░░▒▓▒▒▒▓█▓▒▒▒▒▒▒█████▒▒▓███══════
█▓▒█▓░░▒▒▒▒▒▒▒▒▒▓▓▒▒▓▒▒░░░▒▒▒▒█████═════
▓▓██░░▒▒▒▒▒▒▒▒▓▒▒▓▓▓▒▒▒▒▒▓██▓▓██████════
▓██▒░▒▒▒▒▒▒▒▒▒▓▓▓▓▓██▓▒▒▒░▒░▒█████▓██═══
▓▓█▒░▒▒▒▒▒▒▓▒▒▒▓▓██████▓▒▒▒▒█████▓▓██░══
█▓█▒░▒▒▒▒▒▒▒▒▒▓▓▓▓████████▓▒████▓██▓██══
▓██▒░▒░▒░░░▒▒▒▒▒▒▒▓▓████▓▒▒▒███▓▓█▓▓▓█══
▒██░░░░░░░░▒▒▒▒▒▒▒▓▓███▓▓▒▒██▓█▓█▓▒█▓██░
▒█▒═░░░░░▒▒░▒▒▒▒▒▒▒▒▒▒▒▓▒▒██▓▓▒█▒▒█▓▒▒▓█
▒█▓░░░░░░░▒▒░▒▒▒▒░░░░▒▒░░██▒▓▒▓▒▒█▓▒▒▒▒█
▒▒█▒═░░░░░░░░░░░░░░░▒░═▒█▒▒▓▒▓█▓▓▒▒▒▒▒▒▓
█▒█▒═░░░░░░░░░░░░░░▒═░██▒▒▒▓▓▒▒▓▒▒▒▒▒▓▒▓
▓▓▒█░░░░░░░░░░░░░░░═▒█▒▒██▓▒▒▓▒▒▒▒▒▓▓▓▒▓
▓█▒█▒═░░░░░░░░▒░░░═▒█▒▒▓▓▓▓▓▒▒▓▒▒▓▓▓▓▒▓▓
▓█▓▒▒═░░░░░▒░▒░░▒═▒█▒▓▓▓▓▓█▓▒▒█▓▒▓▓▓▒▓▓▒
▓▓█▓▒░░░░░░░▒▒▒▒═░█▓▓▓▓▓▓▓▓▓▓▒▓██▒▒▒▓▓█▓
▓▓▓▓█▒═░░░░▒▒▒▒═░▓▓▓▓▓▒▓███▒▓█▒▒▓█▓▒▒▒▒▒
▓▓▒▓█▓═░░▒▒░▒▒═░██▓▓▓▓▓████▒▓▓██▓▓██▓▓▓▓
▓▒▒▓▒█░░▒▒░▒░═▒█████████▓███▓▓▓▓▓▓▓▓████
▓█▓▓▓█▓═▒░▒░░██████████████▓████████████
▓█▓▓▓▒█░░▒═░██████▓█▓█▓█▓▓▓▒█▒▒▒▒▒██████
 
*/

    

Solution 2 (runtime: 1109 ms):
#include <bits/stdc++.h>
#define all(x) x.begin(),x.end()
using i64 = long long;
using u64 = unsigned long long;
using u32 = unsigned;
using namespace std;
typedef long long ll;
typedef vector<ll> vi;
typedef vector<vi> vvi;
typedef pair<int,int> pi;
typedef vector<pi> vpi;
long long my_sqrt(long long a) {
    long long l = 0, r = 5000000001;
    while (r - l > 1) {
        long long mid = (l + r) / 2;
        if (1ll * mid * mid <= a) l = mid;
        else r = mid;
    }
    return l;
}
void swap(int& a, int& b) {
    int temp = a;
    a = b;
    b = temp;
    return;
}
void Nischal() {
    int n;
    cin >> n;
    vi c(n);
    for (int i = 0;i < n;i++)cin >> c[i];
    if (n == 1) {
        cout << 0 << endl;
        return;
    }
    vpi over;
    // counts extra overtakes for which are in increasing order 
    for (int i = 0;i < n;i++) {
        for (int j = 0;j < n-i-1;j++) {
            if (c[j] < c[j+1]) {
                over.push_back({ c[j],c[j+1] });
                swap(c[j], c[j + 1]);
            }
        }
    }
    // for reversing the array from increasing to decreasing 
    for (int i = 0;i < n;i++) {
        for (int j = 0;j < n - i - 1;j++) {
            if (c[j] > c[j+1]) {
                over.push_back({ c[j],c[j+1] });
                swap(c[j], c[j + 1]);
            }
        }
    }
    cout << over.size() << endl;
    reverse(all(over));
    // sort(all(over), [](const pi& x, const pi& y) { if (x.second == y.second) return x.first < y.first; else return  x.second < y.second; });
    for (auto pair: over) {
        cout << pair.first << " " << pair.second<<endl;
    }
}
int main() {
    #ifndef ONLINE_JUDGE
    freopen("input.txt", "r", stdin);
    freopen("output.txt", "w", stdout);
    #endif
    ios::sync_with_stdio(false);
    cin.tie(0);

    int t=1;
    // cin >> t;

    while (t--) {
        Nischal();
    }
    return 0;
}