func_code_string: #include <bits/stdc++.h>   using namespace std;   const int MAX_N = 500 * 1000 + 10;   vector<int> adj[MAX_N], vec[MAX_N];   int n, m, cnt;   queue<int> q;   set<int> s;   void readInput() {     int n, m;     cin >> n >> m;     for (int i = 0; i < m; i++) {       int u, v;       cin >> u >> v;       u--, v--;       adj[u].push_back(v);       adj[v].push_back(u);     }     for (int i = 0; i < n; i++) sort(adj[i].begin(), adj[i].end()), s.insert(i);   }   void solve() {     while (!s.empty()) {       q.push(*s.begin()), s.erase(s.begin());       while (!q.empty()) {         int u = q.front();         q.pop(), vec[cnt].push_back(u);         int cur = 0;         vector<int> tmp;         for (auto v : s) {           while (cur < adj[u].size() && adj[u][cur] < v) cur++;           if (cur == adj[u].size() || adj[u][cur] != v) tmp.push_back(v);         }         for (auto v : tmp) q.push(v), s.erase(v);       }       cnt++;     }   }   void writeOutput() {     cout << cnt << endl;     for (int i = 0; i < cnt; i++) {       cout << vec[i].size() <<    ;       for (auto u : vec[i]) cout << u + 1 <<    ;       cout << endl;     }   }   int main() {     ios_base ::sync_with_stdio(false), cin.tie(NULL), cout.tie(NULL);     readInput(), solve(), writeOutput();     return 0;   }   