#include <bits/stdc++.h>
using namespace std;
long long gcd(long long a, long long b) {
  if (a > b) swap(a, b);
  if (a == 0) return b;
  return gcd(b % a, a);
}
long long powerMod(long long x, long long y) {
  long long res = 1;
  x %= 1000000007;
  while (y > 0) {
    if (y & 1) res = (res * x) % 1000000007;
    y = y >> 1;
    x = (x * x) % 1000000007;
  }
  return res;
}
int main() {
  ios::sync_with_stdio(0);
  cin.tie(NULL);
  cout.tie(NULL);
  ;
  long long n, i, j, k, l;
  cin >> n;
  long long p[n + 1], q[n + 1];
  for (i = 1; i <= n; i++) {
    cin >> p[i];
    q[p[i]] = i;
  }
  long long m = 0;
  vector<pair<long long, long long> > swaps;
  for (i = 1; i <= n; i++) {
    if (p[i] != i) {
      j = q[i];
      if (2 * abs(i - j) >= n) {
        m++;
        swaps.push_back({i, j});
        p[j] = p[i];
        q[p[i]] = j;
        p[i] = i;
        q[i] = i;
      } else if (i <= n / 2 && j <= n / 2) {
        k = max(i, j) + n / 2;
        m += 3;
        swaps.push_back({i, k});
        swaps.push_back({j, k});
        swaps.push_back({i, k});
        p[j] = p[i];
        q[p[i]] = j;
        p[i] = i;
        q[i] = i;
      } else if (i > n / 2 && j > n / 2) {
        k = min(i, j) - n / 2;
        m += 3;
        swaps.push_back({i, k});
        swaps.push_back({j, k});
        swaps.push_back({i, k});
        p[j] = p[i];
        q[p[i]] = j;
        p[i] = i;
        q[i] = i;
      } else {
        m += 5;
        if (i <= n / 2 && j > n / 2)
          k = i + n / 2, l = j - n / 2;
        else
          k = i - n / 2, l = j + n / 2;
        swaps.push_back({j, l});
        swaps.push_back({l, k});
        swaps.push_back({k, i});
        swaps.push_back({k, l});
        swaps.push_back({l, j});
        p[j] = p[i];
        q[p[i]] = j;
        p[i] = i;
        q[i] = i;
      }
    }
  }
  cout << m << endl;
  for (pair<long long, long long> p : swaps) {
    cout << p.first << " " << p.second << endl;
  }
  return 0;
}
