func_code_string: #include <bits/stdc++.h>   using namespace std;   int fw[100005], s[100005], t[100005];   bool r[100005], v[100005];   int res = 0;   void dfs(int i) {     v[i] = true;     if (v[fw[i]]) {       t[res] = i;     } else {       dfs(fw[i]);     }   }   int main() {     int n = 0;     ios::sync_with_stdio(false);     memset(fw, 0, sizeof(fw));     memset(r, true, sizeof(r));     memset(v, false, sizeof(v));     cin >> n;     int num = 0;     for (int i = 1; i <= n; ++i) {       cin >> fw[i];       r[fw[i]] = false;     }     for (int i = 1; i <= n; ++i) {       if (r[i] && !v[i]) {         ++res;         s[res] = i;         dfs(i);       }     }     int cur = res;     for (int i = 1; i <= n; ++i) {       if (!v[i]) {         ++res;         s[res] = i;         dfs(i);       }     }     if (cur == 0 && res == 1) {       cout << 0 << endl;     } else {       cout << res << endl;       for (int i = 1; i <= res; ++i) {         cout << t[i] <<     << s[i % res + 1] << endl;       }     }     return 0;   }   