#include <bits/stdc++.h>
using namespace std;
inline void prep() {
  cin.tie(0);
  cin.sync_with_stdio(0);
};
int mod;
int mymod(int num) {
  if (num < 0) {
    if (mod == 1) {
      return 0;
    }
    return mod - abs(num) % mod;
  } else {
    return num % mod;
  }
}
double eps = .0000000001;
int arr[300000];
void swapp(int ind1, int ind2) {
  int temp = arr[ind1];
  arr[ind1] = arr[ind2];
  arr[ind2] = temp;
}
int main() {
  prep();
  int n;
  cin >> n;
  for (int i = 0; i < n; i++) {
    cin >> arr[i];
  }
  bool change = false;
  vector<pair<int, int> > swaps;
  while (true) {
    change = false;
    for (int i = 0; i < n; i++) {
      while (arr[i] != i + 1) {
        change = true;
        int badnum = arr[i];
        if (abs(badnum - 1 - i) * 2 >= n) {
          swapp(badnum - 1, i);
          swaps.push_back({badnum, i + 1});
        } else if (badnum <= n / 2 && i + 1 <= n / 2) {
          swapp(n - 1, i);
          swapp(n - 1, badnum - 1);
          swaps.push_back({n, i + 1});
          swaps.push_back({badnum, n});
        } else if (badnum > n / 2 && i + 1 > n / 2) {
          swapp(0, i);
          swapp(0, badnum - 1);
          swaps.push_back({1, i + 1});
          swaps.push_back({badnum, 1});
        } else if (badnum <= n / 2 && i + 1 > n / 2) {
          swapp(0, i);
          swapp(0, n - 1);
          swapp(badnum - 1, n - 1);
          swaps.push_back({1, i + 1});
          swaps.push_back({1, n});
          swaps.push_back({badnum, n});
        } else {
          swapp(i, n - 1);
          swapp(n - 1, 0);
          swapp(0, badnum - 1);
          swaps.push_back({n, i + 1});
          swaps.push_back({1, n});
          swaps.push_back({badnum, 1});
        }
      }
    }
    if (!change) {
      break;
    }
  }
  printf("%d\n", swaps.size());
  for (pair<int, int> i : swaps) {
    printf("%d %d\n", i.first, i.second);
  }
  return 0;
}
