#include <bits/stdc++.h>
using namespace std;
inline char gc() {
  static char now[1 << 16], *S, *T;
  if (T == S) {
    T = (S = now) + fread(now, 1, 1 << 16, stdin);
    if (T == S) return EOF;
  }
  return *S++;
}
inline long long read() {
  register long long x = 0, f = 1;
  char ch = gc();
  while (!isdigit(ch)) {
    if (ch == '-') f = -1;
    ch = gc();
  }
  while (isdigit(ch)) {
    x = (x << 3) + (x << 1) + ch - '0';
    ch = gc();
  }
  return (f == 1) ? x : -x;
}
int n, a[1010101], pos[1010101];
vector<pair<int, int> > dl;
inline void myswap(int x, int y) {
  swap(a[x], a[y]);
  swap(x, y);
  pos[a[y]] = y;
  pos[a[x]] = x;
  dl.push_back(make_pair(y, x));
}
signed main() {
  n = read();
  for (int i = 1; i <= n; i++) {
    a[i] = read();
    pos[a[i]] = i;
  }
  if (n == 2) {
    if (a[1] != 1) {
      puts("1");
      puts("1 2");
    } else {
      puts("0");
    }
    return 0;
  }
  for (int i = n / 2; i; i--) {
    if (a[i] != i) {
      if (pos[i] <= i) {
        myswap(pos[i], n);
        myswap(i, n);
      } else {
        if (abs(pos[i] - i) >= n / 2)
          myswap(pos[i], i);
        else {
          myswap(pos[i], 1);
          myswap(pos[i], n);
          myswap(pos[i], i);
        }
      }
    }
    if (a[n - i + 1] != n - i + 1) {
      if (pos[n - i + 1] >= n - i + 1) {
        myswap(pos[n - i + 1], 1);
        myswap(n - i + 1, 1);
      } else {
        if (abs(pos[n - i + 1] - (n - i + 1) >= n / 2))
          myswap(pos[n - i + 1], n - i + 1);
        else {
          myswap(pos[n - i + 1], n);
          myswap(pos[n - i + 1], 1);
          myswap(pos[n - i + 1], n - i + 1);
        }
      }
    }
  }
  cout << (int)dl.size() << endl;
  for (auto x : dl) {
    printf("%d %d\n", min(x.first, x.second), max(x.first, x.second));
  }
  return 0;
}
