func_code_string: #include <bits/stdc++.h>   using namespace std;   long long int mod = 1000000007;   long long mod1 = 1000000000000000009;   long long poww(long long x, long long y) {     if (y == 0) return 1;     if (x == 1) return 1;     if (x == 0) return 0;     if (y == 1) return x;     long long d = poww(x, y / 2);     d %= mod;     if (y % 2) return (((d * d) % mod) * x);     return (d * d) % mod;   }   long long combaination(long long n, long long k) {     long long f = 1;     for (long long i = 0; i < k; i++) f *= n - i, f /= i + 1;     return f;   }   long long a[300009];   vector<pair<long long, long long> > v;   int main() {     long long n;     cin >> n;     long long a[n];     long long x = 0, y = 0;     for (long long i = 1; i <= n; i++) cin >> a[i];     long long i = 1;     while (i <= n) {       if (a[i] == i) {         i++;         continue;       }       if (abs(a[i] - i) >= n / 2) {         v.push_back(make_pair(i, a[i]));         swap(a[i], a[a[i]]);       } else {         if ((n - max(i, a[i])) >= n / 2) {           x = i;           y = a[i];           v.push_back(make_pair(x, n));           v.push_back(make_pair(n, y));           v.push_back(make_pair(x, n));           swap(a[x], a[n]);           swap(a[y], a[n]);           swap(a[x], a[n]);         } else if (min(i, a[i]) - 1 >= n / 2) {           x = i;           y = a[i];           v.push_back(make_pair(x, 1));           v.push_back(make_pair(y, 1));           v.push_back(make_pair(x, 1));           swap(a[x], a[1]);           swap(a[y], a[1]);           swap(a[x], a[1]);         } else {           x = i, y = a[i];           if (x > y) swap(x, y);           v.push_back(make_pair(y, 1));           v.push_back(make_pair(x, n));           v.push_back(make_pair(n, 1));           v.push_back(make_pair(y, 1));           v.push_back(make_pair(x, n));           swap(a[y], a[1]);           swap(a[x], a[n]);           swap(a[n], a[1]);           swap(a[y], a[1]);           swap(a[n], a[x]);         }       }     }     cout << v.size() << endl;     for (long long i = 0; i < v.size(); i++)       cout << v[i].first <<     << v[i].second << endl;     return 0;   }   