#include <bits/stdc++.h>
#pragma GCC optimize(2)
#pragma GCC optimize(3)
#pragma GCC optimize(4)
using namespace std;
const int N = 3e5 + 5;
int a[N], pos[N], n;
vector<pair<int, int> > vc;
void add(int x, int y) {
  vc.push_back({x, y});
  swap(a[x], a[y]);
  swap(pos[a[x]], pos[a[y]]);
}
int main() {
  scanf("%d", &n);
  for (int i = 1; i <= n; ++i) scanf("%d", &a[i]), pos[a[i]] = i;
  for (int i = 1; i <= n / 2; ++i) {
    if (pos[i] <= n / 2) {
      add(pos[i], n);
      add(n, i);
    } else {
      add(pos[i], 1);
      add(1, n);
      add(n, i);
    }
  }
  for (int i = n / 2 + 1; i <= n; ++i) {
    if (pos[i] <= n / 2) {
      add(pos[i], n);
      add(n, 1);
      add(1, i);
    } else {
      add(pos[i], 1);
      add(1, i);
    }
  }
  cout << (int)vc.size() << endl;
  for (pair<int, int> p : vc) printf("%d %d\n", p.first, p.second);
  return 0;
}
