func_code_string: #include <bits/stdc++.h>   using namespace std;   long long ncr_2(long long n, long long k) {     if (k > n) return 0;     if (k * 2 > n) k = n - k;     if (k == 0) return 1;     long long result = n;     for (long long i = 2; i <= k; ++i) {       result = result * (n - i + 1);       result /= i;     }     return result;   }   long long pow(int x, unsigned int y, int p) {     int res = 1;     x = x % p;     if (x == 0) return 0;     while (y > 0) {       if (y & 1) res = (res * x) % p;       y = y >> 1;       x = (x * x) % p;     }     return res;   }   long long _pow(int a, int b) {     if (!b) return 1;     int temp = _pow(a, b / 2);     temp = (temp * temp);     if (b % 2) return (a * temp);     return temp;   }   int invmod(int a, int m) { return pow(a, m - 2, m); }   long long feelthepower(long long x, long long y) {     long long res = 1LL;     while (y) {       if (y & 1) {         res = (res * 1LL * x) % 1000000007;       }       x = (x * 1LL * x) % 1000000007;       y /= 2;     }     return res;   }   vector<int> Adj[100001], A;   int cnt = 0;   vector<bool> vis(100001, false);   void dfs(int s) {     if (vis[s]) return;     vis[s] = true;     A.push_back(s);     cnt++;     for (auto v : Adj[s]) {       if (!vis[v]) {         dfs(v);       }     }   }   signed main() {     ios_base::sync_with_stdio(0);     cin.tie(NULL);     cout.tie(NULL);     ;     int tc = 1;     for (long long ti = 0; ti < tc; ti++) {       int n;       cin >> n;       vector<int> V(n);       map<int, int> mp;       for (long long i = 0; i < n; i++) {         cin >> V[i];         mp[V[i]] = i + 1;       }       vector<int> vec(V);       sort(vec.begin(), vec.end());       for (long long i = 0; i < n; i++) {         Adj[mp[vec[i]]].push_back(i + 1);         Adj[i + 1].push_back(mp[vec[i]]);       }       vector<int> Store[100001];       int j = 0, cnt1 = 0;       for (int i = 1; i <= n; i++) {         if (!vis[i]) {           cnt = 0;           dfs(i);           Store[j].push_back(cnt);           for (auto x : A) {             Store[j].push_back(x);           }           A.clear();           j++;         }       }       cout << j << endl;       for (long long i = 0; i < j; i++) {         for (long long k = 0; k < Store[i].size(); k++) {           cout << Store[i][k] <<    ;         }         cout << endl;       }     }   }   