func_code_string: #include <bits/stdc++.h>   using namespace std;   int n, m, k;   vector<int> adj[100005];   int col[100005], att[100005], dep[100005];   void dfs(int u, int d = 1, int p = -1) {     att[d] = u, dep[u] = d, col[u] = (d & 1) + 1;     for (int& v : adj[u])       if (v != p) {         if (dep[v] && d - dep[v] + 1 >= k) {           printf( 2 n );           printf( %d n , d - dep[v] + 1);           for (int i = dep[v]; i <= d; i++) printf( %d  , att[i]);           printf(  n );           exit(0);         } else if (!dep[v])           dfs(v, d + 1, u);         else           col[v] = (col[u] == col[v] ? 3 : col[v]);       }   }   int main() {     scanf( %d%d , &n, &m);     while (k * k < n) k++;     for (int a, b, i = 0; i < m; i++) {       scanf( %d%d , &a, &b);       adj[a].push_back(b);       adj[b].push_back(a);     }     srand(time(0));     for (int i = 1; i <= n; i++) random_shuffle(adj[i].begin(), adj[i].end());     dfs(1);     for (int c : {1, 2}) {       int cnt = count(col, col + n + 1, c);       if (cnt >= k) {         printf( 1 n );         for (int i = 1; i <= n && k; i++)           if (col[i] == c) printf( %d  , i), k--;         printf(  n );         return 0;       }     }   }   