#include <bits/stdc++.h>
using namespace std;
bool cmp(array<long long int, 3> a, array<long long int, 3> b) {
  return a[0] < b[0];
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(NULL);
  cout.tie(NULL);
  long long int n;
  cin >> n;
  vector<long long int> p(n + 1);
  vector<long long int> pos(n + 1);
  for (long long int i = 1; i <= n; i++) {
    cin >> p[i];
    pos[p[i]] = i;
  }
  vector<array<long long int, 2>> v;
  for (long long int i = 1; i <= n; i++) {
    if (pos[i] != i) {
      if (i <= n / 2) {
        if (pos[i] > n / 2) {
          long long int z = pos[i];
          v.push_back({pos[i], 1});
          swap(pos[i], pos[p[1]]);
          swap(p[z], p[1]);
          v.push_back({1, n});
          swap(pos[p[1]], pos[p[n]]);
          swap(p[1], p[n]);
          v.push_back({n, i});
          swap(pos[p[n]], pos[p[i]]);
          swap(p[n], p[i]);
        } else {
          long long int z = pos[i];
          v.push_back({pos[i], n});
          swap(pos[i], pos[p[n]]);
          swap(p[z], p[n]);
          v.push_back({n, i});
          swap(pos[p[n]], pos[p[i]]);
          swap(p[n], p[i]);
        }
      } else {
        if (pos[i] <= n / 2) {
          long long int z = pos[i];
          v.push_back({pos[i], n});
          swap(pos[i], pos[p[n]]);
          swap(p[z], p[n]);
          v.push_back({n, 1});
          swap(pos[p[n]], pos[p[1]]);
          swap(p[n], p[1]);
          v.push_back({1, i});
          swap(pos[p[1]], pos[p[i]]);
          swap(p[1], p[i]);
        } else {
          long long int z = pos[i];
          v.push_back({pos[i], 1});
          swap(pos[i], pos[p[1]]);
          swap(p[z], p[1]);
          v.push_back({1, i});
          swap(pos[p[1]], pos[p[i]]);
          swap(p[1], p[i]);
        }
      }
    }
  }
  if (p[1] != 1) {
    swap(pos[p[1]], pos[p[n]]);
    swap(p[1], p[n]);
    v.push_back({1, n});
  }
  cout << v.size() << "\n";
  for (auto it : v) {
    cout << it[0] << " " << it[1] << "\n";
  }
}
