#include <bits/stdc++.h>   using namespace std;   using namespace chrono;   const int N = 250005;   vector<int> G[N], leaf;   int n, k, dep[N], par[N], ans;   void dfs(int d, int u, int p) {     dep[u] = d;     par[u] = p;     if (d >= n / k) ans = 1;     int c = 0;     for (auto v : G[u]) {       if (dep[v]) continue;       dfs(d + 1, v, u);       c++;     }     if (!c) leaf.push_back(u);   }   int main() {     time_point<steady_clock> start = steady_clock::now();     int m, u, v;     scanf( %d%d%d , &n, &m, &k);     while (m--) {       scanf( %d%d , &u, &v);       G[u].push_back(v);       G[v].push_back(u);     }     dfs(1, 1, 0);     if (ans) {       ans = leaf[0];       for (auto u : leaf)         if (dep[u] > dep[ans]) ans = u;       printf( PATH n%d n , dep[ans]);       while (ans) {         printf( %d  , ans);         ans = par[ans];       }     } else {       printf( CYCLES n );       for (int i = 0; i < k; i++) {         int x = leaf[i];         u = v = 0;         for (int j = 0; j < G[x].size(); j++) {           if (G[x][j] != par[x]) {             if (!u)               u = G[x][j];             else if (G[x][j] != u) {               v = G[x][j];               break;             }           }         }         if (dep[u] < dep[v]) swap(u, v);         if ((dep[x] - dep[u] + 1) % 3) {           printf( %d n , dep[x] - dep[u] + 1);           while (x != u) {             printf( %d  , x);             x = par[x];           }           printf( %d n , u);         } else if ((dep[x] - dep[v] + 1) % 3) {           printf( %d n , dep[x] - dep[v] + 1);           while (x != v) {             printf( %d  , x);             x = par[x];           }           printf( %d n , v);         } else {           printf( %d n%d  , dep[u] - dep[v] + 2, x);           while (u != v) {             printf( %d  , u);             u = par[u];           }           printf( %d n , v);         }       }     }     cerr << endl          <<  ------------------------------  << endl          <<  Time:            << duration<double, milli>(steady_clock::now() - start).count() <<   ms.           << endl;     return 0;   }   