#include <bits/stdc++.h>
using namespace std;
int n, m, a[300100], b[300100], pos[300100];
vector<pair<int, int> > ans;
inline void ws(int xx, int yy) { ans.push_back(make_pair(xx, yy)); }
int main() {
  scanf("%d", &n);
  for (int i = 1; i <= n; ++i) {
    scanf("%d", &a[i]);
    pos[a[i]] = i;
  }
  if (a[1] != 1) {
    int p = pos[1];
    int x = a[1];
    if (p - 1 >= n / 2) {
      ws(1, p);
      a[1] = 1;
      pos[1] = 1;
      pos[x] = p;
      a[p] = x;
    } else if (n - p >= n / 2) {
      ws(p, n);
      ws(1, n);
      ws(p, n);
      a[1] = 1;
      pos[1] = 1;
      pos[x] = p;
      a[p] = x;
    }
  }
  if (a[n] != n) {
    int p = pos[n];
    int x = a[1];
    int z = a[n];
    if (p - 1 >= n / 2) {
      ws(1, p);
      ws(1, n);
      ws(1, p);
      a[p] = z;
      pos[z] = p;
      pos[n] = n;
      a[n] = n;
    } else if (n - p >= n / 2) {
      ws(p, n);
      a[p] = z;
      pos[z] = p;
      pos[n] = n;
      a[n] = n;
    }
  }
  for (int i = 2; i < n; ++i) {
    if (pos[i] == i) continue;
    int p = pos[i];
    int x = a[1];
    int y = a[i];
    int z = a[n];
    if (p - 1 >= n / 2 && i - 1 >= n / 2) {
      ws(1, p);
      ws(1, i);
      ws(1, p);
      swap(a[i], a[pos[i]]);
      pos[y] = p;
      pos[i] = i;
    } else if (p - 1 >= n / 2 && n - i >= n / 2) {
      ws(1, p);
      ws(1, n);
      ws(i, n);
      ws(1, n);
      ws(1, p);
      swap(a[i], a[p]);
      pos[y] = p;
      pos[i] = i;
    } else if (n - p >= n / 2 && i - 1 >= n / 2) {
      ws(p, n);
      ws(1, n);
      ws(1, i);
      ws(1, n);
      ws(p, n);
      swap(a[i], a[p]);
      pos[y] = p;
      pos[i] = i;
    } else if (n - p >= n / 2 && n - i >= n / 2) {
      ws(p, n);
      ws(i, n);
      ws(p, n);
      swap(a[i], a[p]);
      pos[y] = p;
      pos[i] = i;
    }
  }
  printf("%d\n", ans.size());
  for (int i = 0; i < ans.size(); ++i) {
    printf("%d %d\n", ans[i].first, ans[i].second);
  }
}
