Problem: 2052A - Adrenaline Rush
Language: java

Solution 1 (runtime: 1953 ms):
import java.util.*;
import java.io.*;

public class A_Adrenaline_Rush {

    int mod = (int) 1e9 + 7;
    
    public static void main(String[] args) {
        int n = sc.nextInt();
        int[] f = new int[n];
        input(f);
        int[] a = new int[n];
        for(int i=0;i<n;i++) a[i] = i+1;
        List<int[]> l = new ArrayList<>();
        for(int i=1;i<n;i++){
            int j = i;
            while(j>0){
                int temp = a[j];
                a[j] = a[j-1];
                a[j-1] = temp;
                l.add(new int[]{a[j-1],a[j]});
                j--;
            }
        }
        for(int i=0;i<n;i++){
            int pl = f[i];
            // System.out.println(pl);
            int idx = -1;
            for(int j=0;j<n;j++){
                if(a[j]==pl){
                    idx = j;
                    break;
                }
            }
            // System.out.println(idx);
            if(i<idx)    {int j = idx;
                while(j>i){
                    int temp = a[j];
                    a[j] = a[j-1];
                    a[j-1] = temp;
                    l.add(new int[]{a[j-1],a[j]});
                    j--;
                }
                // if(dest>0){
                //     while(j<dest){
                //         int temp = a[j];
                //         a[j] = a[j+1];
                //         a[j+1] = temp;
                //         l.add(new int[]{a[j],a[j+1]});
                //         j++;
                //     }
                // }
            }
            // printArr(a);
        }
        System.out.println(l.size());
        for(int i=0;i<l.size();i++){
            System.out.println(l.get(i)[0] + " " + l.get(i)[1]);
        }
        // printArr(a);
    }
    
    public static void input(Object array) {
        if (array instanceof int[])
            for (int i = 0; i < ((int[]) array).length; i++)
                ((int[]) array)[i] = sc.nextInt();
        else if (array instanceof long[])
            for (int i = 0; i < ((long[]) array).length; i++)
                ((long[]) array)[i] = sc.nextLong();
    }
    
    public static void printArr(Object array) {
        if (array instanceof int[])
            for (int x : (int[]) array)
                System.out.print(x + " ");
        else if (array instanceof long[])
            for (long x : (long[]) array)
                System.out.print(x + " ");
        System.out.println();
    }
    
    public static <T extends Number> long gcd(T a, T b) {
        return b.longValue() == 0 ? a.longValue() : gcd(b, a.longValue() % b.longValue());
    }
    
    static FastReader sc = new FastReader();
    
    static class FastReader {
        BufferedReader br;
        StringTokenizer st;
    
        public FastReader() {
            br = new BufferedReader(new InputStreamReader(System.in));
        }
    
        String next() {
            while (st == null || !st.hasMoreTokens()) {
                try {
                    st = new StringTokenizer(br.readLine());
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            return st.nextToken();
        }
    
        int nextInt() {
            return Integer.parseInt(next());
        }
    
        long nextLong() {
            return Long.parseLong(next());
        }
    
        double nextDouble() {
            return Double.parseDouble(next());
        }
    
        String nextLine() {
            String str = "";
            try {
                str = br.readLine().trim();
            } catch (Exception e) {
                e.printStackTrace();
            }
            return str;
        }
    }
}

Solution 2 (runtime: 1093 ms):

import java.io.*;
import java.util.*;

/**
 * Problem    = cf2052a
 * Date       = Mon Jan 27 23:11:17 PST 2025
 */
public class cf2052a {

  static class Pair {
    int x,y;
    Pair(int x, int y){
      this.x=x;this.y=y;
    }
  }

  public void run() {
    int n = in.nextInt();
    int[] p = new int[n+1];
    for(int i = 1; i <= n; ++i){
      p[i]=in.nextInt();
    }
    Set<Integer> s = new HashSet<>();
    
    var pairs = new LinkedList<Pair>();
    for(int i = 1; i <= n; ++i){
      for(int j = p[i]+1; j <= n; ++j){
        if (!s.contains(j)){
          pairs.add(new Pair(j,p[i]));
        }
      }
      for(int j = n; j > 0; j--){
        if (p[i]==j) continue;
        if (!s.contains(j)){
          pairs.add(new Pair(p[i],j));
        }
      }
      s.add(p[i]);
    }
    out.println(pairs.size());
    for(var pair : pairs)
      out.println(pair.x + " " + pair.y);
  }

  /////////////////////////////////////////////////////////////////////////////////
  static InputStream in(){try{if(file!=null)return new FileInputStream(file+".in");
  return System.in;}catch(Exception e){throw new RuntimeException(e);}}static
  OutputStream out(){try{if(file!=null)return new FileOutputStream(file+".out");
  return System.out;}catch(Exception e){throw new RuntimeException(e);}}IR in=new
  IR(in());PrintWriter out=new PrintWriter(out());void c(){out.close();}static
  class IR{BufferedReader r;StringTokenizer t=null;IR(InputStream s){r=new
  BufferedReader(new InputStreamReader(s),32768);}boolean p(){while(t==null||
  !t.hasMoreTokens()){try{String l=r.readLine();if(l==null)return false;t=new
  StringTokenizer(l);}catch(IOException e){throw new RuntimeException(e);}}return
  true;}boolean hasNext(){return p();}String next(){p();return t.nextToken();}int
  nextInt(){return Integer.parseInt(next());}long nextLong(){return Long.parseLong(
  next());}double nextDouble(){return Double.parseDouble(next());}}public static
  void main(String[]args){cf2052a t=new cf2052a();t.run();t.c();}
  /////////////////////////////////////////////////////////////////////////////////
  static String file;
}