func_code_string: #include <bits/stdc++.h>   using namespace std;   int n, m, k, x, y, H[300005], d, ant[300005];   vector<int> v[300005], st, L;   void dfs(int nod) {     int ok = 0;     st.push_back(nod);     H[nod] = st.size();     if (H[nod] >= d) {       cout <<  PATH n ;       cout << st.size() <<   n ;       for (auto it : st) cout << it <<    ;       exit(0);     }     for (auto it : v[nod])       if (!H[it]) {         ant[it] = nod;         dfs(it);         ok = 1;       }     if (!ok) L.push_back(nod);     st.pop_back();   }   bool _try(int a, int b) {     if (H[a] < H[b]) swap(a, b);     if (H[a] - H[b] + 1 >= 3 && (H[a] - H[b] + 1) % 3 != 0) {       cout << H[a] - H[b] + 1 <<   n ;       int crt = a;       while (crt != b) {         cout << crt <<    ;         crt = ant[crt];       }       cout << crt <<   n ;       return 1;     }     return 0;   }   bool _try2(int a, int b, int c) {     if (H[a] < H[b]) swap(a, b);     if (H[a] - H[b] + 2 >= 3 && (H[a] - H[b] + 2) % 3 != 0) {       cout << H[a] - H[b] + 2 <<   n ;       int crt = a;       while (crt != b) {         cout << crt <<    ;         crt = ant[crt];       }       cout << crt <<     << c <<   n ;       return 1;     }     return 0;   }   int main() {     ios::sync_with_stdio(false);     cin >> n >> m >> k;     d = n / k + (n % k != 0);     for (int i = 1; i <= m; i++) {       cin >> x >> y;       v[x].push_back(y);       v[y].push_back(x);     }     dfs(1);     cout <<  CYCLES n ;     for (auto it : L) {       if (k == 0) break;       k--;       if (_try(it, v[it][0])) continue;       if (_try(it, v[it][1])) continue;       if (_try(it, v[it][2])) continue;       if (_try2(v[it][0], v[it][1], it)) continue;       if (_try2(v[it][0], v[it][2], it)) continue;       if (_try2(v[it][1], v[it][2], it)) continue;     }     return 0;   }   