#include <bits/stdc++.h>
using namespace std;
int ar[300005], n;
vector<pair<int, int> > v, stp;
int nu[300005];
void fun(int k, int kin) {
  int ja = (kin - 1 >= n / 2) ? 1 : n;
  stp.push_back(make_pair(min(ja, kin), max(kin, ja)));
  int tmp = nu[ja];
  v[k - 1].second = ja;
  v[tmp - 1].second = kin;
  int aw = nu[ja];
  nu[ja] = nu[kin];
  nu[kin] = aw;
  int sw_krte_hbe = 0, sw_kr_in;
  if (ar[ja] == 1) {
    sw_kr_in = kin;
    sw_krte_hbe = 1;
  }
  kin = ja;
  if (abs(k - kin) >= n / 2) {
    stp.push_back(make_pair(min(kin, k), max(kin, k)));
    int tmp = nu[k];
    v[k - 1].second = k;
    v[tmp - 1].second = kin;
    ar[k] = 1;
    int aw = nu[k];
    nu[k] = nu[kin];
    nu[kin] = aw;
  } else {
    fun(k, kin);
  }
  if (sw_krte_hbe == 1) {
    int sw_in_e = nu[sw_kr_in];
    k = sw_in_e;
    kin = sw_kr_in;
    stp.push_back(make_pair(min(kin, k), max(kin, k)));
    int tmp = nu[k];
    v[k - 1].second = k;
    v[tmp - 1].second = kin;
    ar[k] = 1;
    int aw = nu[k];
    nu[k] = nu[kin];
    nu[kin] = aw;
  }
}
int main() {
  int i, j, k, t;
  cin >> n;
  t = n + 2;
  memset(ar, 0, sizeof(ar));
  for (i = 1; i <= n; i++) {
    scanf("%d", &k);
    nu[i] = k;
    v.push_back(make_pair(k, i));
  }
  sort(v.begin(), v.end());
  for (i = 0; i < n; i++) {
    k = v[i].first;
    if (k == v[i].second) {
      ar[k] = 1;
      continue;
    }
    int kin = v[i].second;
    if (abs(k - kin) >= n / 2) {
      stp.push_back(make_pair(min(kin, k), max(kin, k)));
      int tmp = nu[k];
      v[k - 1].second = k;
      v[tmp - 1].second = kin;
      ar[k] = 1;
      int aw = nu[k];
      nu[k] = nu[kin];
      nu[kin] = aw;
    } else {
      fun(k, kin);
    }
  }
  cout << stp.size() << endl;
  for (i = 0; i < stp.size(); i++) {
    cout << stp[i].first << ' ' << stp[i].second << endl;
  }
  return 0;
}
