func_code_string: #include <bits/stdc++.h>   using namespace std;   const int N = 2.5 * 1e5 + 5;   int n, m, k;   int d[N];   struct Edge {     int num;     int next;   } edge[4 * N];   int tot, last[N];   vector<int> q;   vector<int> ans[N];   vector<int> path;   int anss;   bool flag;   void Add(int i, int j) {     tot++;     edge[tot].num = j;     edge[tot].next = last[i];     last[i] = tot;   }   void dfs(int i, int deep) {     if (flag) return;     d[i] = deep;     q.push_back(i);     if (deep > n / k) {       flag = 1;       for (int j = q.size() - 1; j >= 0; j--) path.push_back(q[j]);       return;     }     bool flag = 0;     for (int k = last[i]; k != 0; k = edge[k].next) {       int v = edge[k].num;       if (d[v] == 0) {         dfs(v, deep + 1);         flag = 1;       }     }     if (flag == 0) {       anss++;       int sign1 = 0, sign2 = 0;       bool sign = 0;       for (int k = last[i]; k != 0; k = edge[k].next) {         int v = edge[k].num;         if (d[v] + 1 == d[i]) continue;         if ((d[i] - d[v]) % 3 == 2) {           if (sign1 == 0)             sign1 = v;           else             sign2 = v;         } else {           for (int k = q.size() - 1; k >= 0; k--) {             ans[anss].push_back(q[k]);             if (q[k] == v) break;           }           sign = 1;           break;         }       }       if (sign == 0) {         bool en = 0;         ans[anss].push_back(i);         for (int k = q.size() - 1; k >= 0; k--) {           if ((q[k] == sign1 || q[k] == sign2) && en == 0) {             en = 1;             ans[anss].push_back(q[k]);             continue;           }           if (en) ans[anss].push_back(q[k]);           if ((q[k] == sign1 || q[k] == sign2) && en == 1) {             en = 0;             break;           }         }       }     }     q.pop_back();   }   int main() {     std::ios::sync_with_stdio(0);     cin >> n >> m >> k;     for (int i = 1; i <= m; i++) {       int u, v;       cin >> u >> v;       Add(u, v);       Add(v, u);     }     dfs(1, 1);     if (flag) {       cout <<  PATH n  << path.size() << endl;       for (int j = path.size() - 1; j >= 0; j--) cout << path[j] <<    ;     } else {       cout <<  CYCLES n ;       for (int i = 1; i <= k; i++) {         cout << ans[i].size() << endl;         ;         for (int j = 0; j <= ans[i].size() - 1; j++) cout << ans[i][j] <<    ;         cout << endl;       }     }   }   