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

Solution 1 (runtime: 1108 ms):
#include<bits/stdc++.h>
#define ll long long
using namespace std;
int main(){
    ios_base::sync_with_stdio(0); cin.tie(0);
    ll siuu=1;//cin>>siuu;
    while(siuu--){
        ll n;cin>>n;
        ll c[n],vis[n+1];
        for(ll i=0;i<n;i++)cin>>c[i];
        for(ll i=0;i<=n;i++)vis[i]=0;
        map<pair<ll,ll>,ll > m;
        vector<pair<ll,ll> > v;
        for(ll i=0;i<n;i++){
            for(ll j=c[i]+1;j<=n;j++){
                if(vis[j]==0) v.push_back(make_pair(j,c[i]));
            }
            for(ll j=n;j>c[i];j--){
                if(vis[j]==0) v.push_back(make_pair(c[i],j));
            }
            for(ll j=c[i]-1;j>=1;j--){
                if(vis[j]==0) v.push_back(make_pair(c[i],j));
            }
            vis[c[i]]=1;
        }
        cout<<v.size()<<endl;
        for(auto it:v)cout<<it.first<<" "<<it.second<<endl;
    }
} 

Solution 2 (runtime: 468 ms):
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define e '\n'
#define pb push_back
#define yes "yes"
#define no "no"
#define F first
#define S second
//#define srt(a) sort(a,a+n)
//#define srt(v) s5ort(v.begin(),v.end())
//#define srt(u) sort(u.begin(),u.end())
#define loop  for(i=1;i<=n;i++)
const int mod=1e9+7;
const int MOD=998244353;
const int lx=1e5+25;
//pair<ll,ll>p[222222];
//map<ll,ll>mp;
//typedef pair<int, int> pi;
//sort(p,p+n,greater<pair<ll,ll>>());-sort vector pair decending order
//priority_queue<pi,vector<pi>,greater<pi>>pq;
//priority_queue<int,vector<int>,greater<int>>pq;-minheap
//priority_queue<pair<int,int>>pq;
//s.erase(position,length)
int main()
{
   //ios_base::sync_with_stdio(0); cin.tie(0);
//   int t,z=1;
//   cin>>t;
//   while(t--){
        ll i=0,j=0,k,c1=0,c2=0,cnt=0,mx=-1e18+7,mn=1e18+7;
        ll d,n,m,ans=0,sum=0,ans1=0,ans2=0;
        cin>>n;
        ll a[n];
        for(i=0;i<n;i++)
            cin>>a[i];
        map<ll,ll>mp;
        vector<pair<ll,ll>>p;
        for(i=0;i<n;i++){
            mp[a[i]]++;
            vector<ll>v;
            for(j=1;j<=n;j++){
                if(j>a[i] && mp[j]==0)
                    v.pb(j);
            }

            for(j=0;j<v.size();j++)
                p.pb({v[j],a[i]});
            reverse(v.begin(),v.end());

            for(j=n;j>=1;j--)
                if(j<a[i] && mp[j]==0)
                   v.pb(j);

            for(j=0;j<v.size();j++)
                p.pb({a[i],v[j]});
        }
        cout<<p.size()<<e;
        for(i=0;i<p.size();i++)
            cout<<p[i].first<<" "<<p[i].second<<e;
    //}
    return 0;
}

//        **Number Theory***

//        sort(a+1,a+n+1);
//        long long gcd=a[1];
//        for(int i=2;i<=n;i++){
//             gcd = __gcd(a[i],gcd);
//        }
//         cout<<gcd<<endl;

//        long long s[10];
//        for(i=1;i<10;i++)
//            s[i]=i;
//        s[1]=2;
//        for(i=2;i<10;i++){
//            q=s[i]*s[i-1];
//            long long gcd = __gcd(s[i],s[i-1]);
//            s[i]=q/gcd;//   -LCM
//        }
//        for(i=1;i<10;i++)
//            cout<<s[i]<<" ";
//        *Linear Diophantine Equations
//        1.ax+by=c
//        there will be a solution if gcd(a,b) can divide c

//        convert string to int and int to string
//        string t;
//        cin>>n;
//        p=stoi(t);
//        std:: string s = std::to_string(n);
//        cout<<s;
//        build all permutation of a string
//        string s="1234";
//        do {
//            std::cout<<s<<std::endl;
//        } while (std::next_permutation(s.begin(),s.end()));


//    Harmonic series-nlogn
//    for(i=1;i<=n;i++){
//        for(j=i;j<=n;j+=i)
//            operation.....
//    }