#include <bits/stdc++.h>
using namespace std;
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  long long n;
  cin >> n;
  vector<long long> arr(n, 0), mapp(n + 1, 0);
  long long k = n / 2;
  for (long long i = 0; i < n; i++) {
    cin >> arr[i];
    mapp[arr[i]] = i;
  }
  vector<pair<long long, long long>> st;
  for (long long i = 0; i < n; i++) {
    long long v = i + 1;
    if (v != arr[i]) {
      long long p = mapp[v];
      if (abs(p - i) >= k) {
        st.push_back({i + 1, p + 1});
        long long a = arr[i];
        arr[i] = arr[p];
        arr[p] = a;
        mapp[arr[i]] = i;
        mapp[arr[p]] = p;
      } else {
        long long in1, in2;
        if (i < k) {
          in1 = n - 1;
        } else
          in1 = 0;
        if (p < k)
          in2 = n - 1;
        else
          in2 = 0;
        if (in1 == in2) {
          st.push_back({i + 1, in1 + 1});
          swap(arr[i], arr[in1]);
          st.push_back({in1 + 1, p + 1});
          swap(arr[in1], arr[p]);
          st.push_back({i + 1, in1 + 1});
          swap(arr[i], arr[in1]);
          mapp[arr[in1]] = in1;
          mapp[arr[i]] = i;
          mapp[arr[p]] = p;
        } else {
          st.push_back({i + 1, in1 + 1});
          swap(arr[i], arr[in1]);
          st.push_back({p + 1, in2 + 1});
          swap(arr[p], arr[in2]);
          st.push_back({in1 + 1, in2 + 1});
          swap(arr[in1], arr[in2]);
          st.push_back({i + 1, in1 + 1});
          swap(arr[i], arr[in1]);
          st.push_back({p + 1, in2 + 1});
          swap(arr[p], arr[in2]);
          mapp[arr[in1]] = in1;
          mapp[arr[i]] = i;
          mapp[arr[p]] = p;
          mapp[arr[in2]] = in2;
        }
      }
    }
  }
  cout << st.size() << endl;
  for (auto i : st) {
    long long a = i.first;
    long long b = i.second;
    cout << min(a, b) << " " << max(a, b) << endl;
  }
}
