func_code_string: #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;   }   