func_code_string: #include <bits/stdc++.h>   using namespace std;   int n, m, a[300100], b[300100], pos[300100];   vector<pair<int, int> > ans;   inline void ws(int xx, int yy) { ans.push_back(make_pair(xx, yy)); }   int main() {     scanf( %d , &n);     for (int i = 1; i <= n; ++i) {       scanf( %d , &a[i]);       pos[a[i]] = i;     }     if (a[1] != 1) {       int p = pos[1];       int x = a[1];       if (p - 1 >= n / 2) {         ws(1, p);         a[1] = 1;         pos[1] = 1;         pos[x] = p;         a[p] = x;       } else if (n - p >= n / 2) {         ws(p, n);         ws(1, n);         ws(p, n);         a[1] = 1;         pos[1] = 1;         pos[x] = p;         a[p] = x;       }     }     if (a[n] != n) {       int p = pos[n];       int x = a[1];       int z = a[n];       if (p - 1 >= n / 2) {         ws(1, p);         ws(1, n);         ws(1, p);         a[p] = z;         pos[z] = p;         pos[n] = n;         a[n] = n;       } else if (n - p >= n / 2) {         ws(p, n);         a[p] = z;         pos[z] = p;         pos[n] = n;         a[n] = n;       }     }     for (int i = 2; i < n; ++i) {       if (pos[i] == i) continue;       int p = pos[i];       int x = a[1];       int y = a[i];       int z = a[n];       if (p - 1 >= n / 2 && i - 1 >= n / 2) {         ws(1, p);         ws(1, i);         ws(1, p);         swap(a[i], a[pos[i]]);         pos[y] = p;         pos[i] = i;       } else if (p - 1 >= n / 2 && n - i >= n / 2) {         ws(1, p);         ws(1, n);         ws(i, n);         ws(1, n);         ws(1, p);         swap(a[i], a[p]);         pos[y] = p;         pos[i] = i;       } else if (n - p >= n / 2 && i - 1 >= n / 2) {         ws(p, n);         ws(1, n);         ws(1, i);         ws(1, n);         ws(p, n);         swap(a[i], a[p]);         pos[y] = p;         pos[i] = i;       } else if (n - p >= n / 2 && n - i >= n / 2) {         ws(p, n);         ws(i, n);         ws(p, n);         swap(a[i], a[p]);         pos[y] = p;         pos[i] = i;       }     }     printf( %d n , ans.size());     for (int i = 0; i < ans.size(); ++i) {       printf( %d %d n , ans[i].first, ans[i].second);     }   }   