#include <bits/stdc++.h>
using namespace std;
bool sortbyf(const pair<int, int> a, const pair<int, int> b) {
  if (a.first == b.first) {
    return (a.second < b.second);
  }
  return (a.first < b.first);
}
bool sortbys(const pair<int, int> a, const pair<int, int> b) {
  if (a.second == b.second) {
    return (a.first < b.first);
  }
  return (a.second < b.second);
}
int a[300001];
int indx[300001];
void swapi(int i, int idi) {
  indx[a[idi]] = i;
  int temp = a[i];
  indx[a[i]] = idi;
  a[i] = a[idi];
  a[idi] = temp;
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  int n;
  cin >> n;
  for (int i = 0; i < (int)n; i++) {
    cin >> a[i + 1];
    indx[a[i + 1]] = i + 1;
  }
  vector<pair<int, int> > v;
  for (int i = 1; i <= n; i++) {
    int idi = indx[i];
    if (idi == i) continue;
    if (i <= (n) / 2) {
      if (2 * abs(idi - i) >= n) {
        swapi(i, idi);
        v.push_back({i, idi});
      } else {
        if (n - idi > idi - 1) {
          swapi(idi, n);
          v.push_back({idi, n});
          swapi(i, n);
          v.push_back({i, n});
        } else {
          swapi(1, idi);
          v.push_back({1, idi});
          swapi(1, n);
          v.push_back({1, n});
          swapi(i, n);
          v.push_back({i, n});
          swapi(1, idi);
          v.push_back({1, idi});
        }
      }
    } else {
      swapi(1, idi);
      v.push_back({1, idi});
      swapi(1, i);
      v.push_back({1, i});
      swapi(1, idi);
      v.push_back({1, idi});
    }
  }
  cout << (int)v.size() << "\n";
  for (int i = 0; i < (int)v.size(); i++) {
    cout << v[i].first << " " << v[i].second << "\n";
  }
}
