func_code_string: #include <bits/stdc++.h>   using namespace std;   using LL = long long;   const int N = 2.5e5;   vector<int> adj[N];   int dep[N], par[N];   bool leaf[N];   bool dfs(int u, int p = -1, int d = 1) {     if (dep[u] > 0) return false;     dep[u] = d;     par[u] = p;     leaf[u] = true;     for (int v : adj[u]) {       if (dfs(v, u, d + 1)) leaf[u] = false;     }     return true;   }   int main() {     ios_base::sync_with_stdio(false);     cin.tie(NULL);     int n, m, k;     cin >> n >> m >> k;     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);     }     dfs(0);     int r = 0;     for (int u = 0; u < n; u++) {       if (dep[u] > dep[r]) r = u;     }     dfs(r);     const int plen = ((n + k - 1) / k);     int leaves = 0;     for (int u = 0; u < n; u++) {       if (dep[u] >= plen) {         cout <<  PATH n  << dep[u] <<   n ;         while (u != -1) {           cout << (u + 1) <<    ;           u = par[u];         }         cout <<   n ;         return 0;       }       if (leaf[u]) leaves++;     }     assert(leaves >= k);     cout <<  CYCLES n ;     int values[3];     vector<int> cy;     cy.reserve(N);     for (int u = 0; u < n && k > 0; u++) {       if (!leaf[u]) continue;       int top = -1;       int id = 0;       for (int v : adj[u]) {         if (v == par[u]) continue;         if ((dep[u] - dep[v]) >= 3 && (dep[u] - dep[v] + 1) % 3 != 0) {           top = v;           break;         }         values[id++] = v;         if (id == 2) break;       }       if (top >= 0) {         for (int v = u; v != top; v = par[v]) {           cy.push_back(v);         }         cy.push_back(top);       } else {         cy.push_back(u);         if (dep[values[0]] < dep[values[1]]) swap(values[0], values[1]);         for (int v = values[0]; v != values[1]; v = par[v]) {           cy.push_back(v);         }         cy.push_back(values[1]);       }       cout << cy.size() <<   n ;       for (int u : cy) cout << (u + 1) <<    ;       cout <<   n ;       cy.clear();       k--;     }     return 0;   }   