func_code_string: #include <bits/stdc++.h>   int f[100005];   int g[100005];   int h[1000005];   int v[100005];   int main() {     int n, m = 0;     scanf( %d , &n);     for (int i = 1; i <= n; i++) {       scanf( %d , &f[i]);     }     for (int i = 1; i <= n; i++) {       if (v[i] == 0) {         if (f[i] == i) {           m++;           h[m] = i;           v[i] = m;           g[i] = m;         } else {           if (v[f[i]] == 0) {             if (f[f[i]] == f[i]) {               m++;               h[m] = f[i];               v[f[i]] = m;               g[f[i]] = m;               g[i] = m;             } else {               puts( -1 );               return 0;             }           } else {             g[i] = v[f[i]];           }         }       }     }     printf( %d n , m);     for (int i = 1; i <= n; i++) {       printf( %d  , g[i]);     }     puts(  );     for (int i = 1; i <= m; i++) {       printf( %d  , h[i]);     }     return 0;   }   