#include <bits/stdc++.h>

#define itn long long
#define int long long
//#define double long double
//#define endl '\n'
#define p_b push_back
#define fi first
#define se second
#define pii pair<int, int>
#define oo LLONG_MAX
#define elif else if

using namespace std;

int input()
{
    int x;
    cin>>x;
    return x;
}


int32_t main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);

//        freopen("divisor.dat", "r", stdin);
//        freopen("prpr.txt", "w", stdout);

//    int n, m;
//    cin>>n>>m;
//    map<int, vector<int>> mp[m];
//    for(int i=0;i<m;i++)
//    {
//        for(int j=0;j<n;j++)
//        {
//            mp[i][input()].p_b(n*i+j+1);
//        }
//    }
//    int ans=0;
//    set<pii> bi[m];
//    set<int> me[n];
//    for(int i=0;i<m;i++)
//    {
//        for(int j=0;j<n;j++)
//        {
//            if(mp[i][j].size()>1)
//                {
//                    for(int q=1;q<mp[i][j].size();q++)
//                    {
//                        bi[i].insert({j, mp[i][j][q]});
//                    }
//                }
//            if(x.se.size()<1)
//                {
//                    me[x.fi]
//                }
//        }
//    }
//    vector<pii>ans;
//    for(int i=0;i<n;i++)
//    {
//        while(!bil[i].empty())
//        {
//            int cur=*bil[i].begin();
//            ans.p_b()
//        }
//    }


    int n;
    cin>>n;
    vector<int>a(n);
    for(itn i=0;i<n;i++)cin>>a[i];
    vector<int>b=a;
    sort(b.begin(), b.end());
    vector<pii>ans;
    for(int i=0;i<n;i++)
    {
        int p=-1;
        if(a[i]!=b[i])
        {
            for(int j=i+1;j<n;j++)
            {
                if(b[i]==a[j])
                {
                    p=j;
                    break;
                }
            }
            ans.p_b({i+1, p+1});
        reverse(a.begin()+i, a.begin()+p+1);
        }

    }
    cout<<ans.size()<<endl;
    for(auto x:ans)cout<<x.fi<<' '<<x.se<<endl;

}
