func_code_string: #include <bits/stdc++.h>   using namespace std;   long long MOD = 1e9 + 7;   bool debug = 1;   const int N = 1e5 + 10;   bool vis[N];   int g[N];   int dfs(int i) {     vis[i] = 1;     if (!vis[g[i]]) {       return 1 + dfs(g[i]);     }     return 1;   }   int main() {     int n, x;     scanf( %d , &n);     for (int i = 0; i < n; i++) {       scanf( %d , &x);       x--;       g[i] = x;     }     vector<int> vc;     for (int i = 0; i < n; i++) {       if (!vis[i]) vc.push_back(dfs(i));     }     long long tot = 0;     sort(vc.begin(), vc.end(), greater<int>());     for (int i = 0; i < min((int)vc.size(), 2); i++) {       tot += vc[i];     }     tot = tot * tot;     for (int i = 2; i <= vc.size() - 1; i++) {       tot += 1ll * vc[i] * vc[i];     }     cout << tot << endl;     return 0;   }   