#include <bits/stdc++.h>
using namespace std;
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  int n, m, k;
  cin >> n >> m >> k;
  vector<vector<int>> edg(n + 1);
  int u, v;
  for (int i = 1; i <= m; i++) {
    cin >> u >> v;
    edg[u].push_back(v);
    edg[v].push_back(u);
  }
  int dfn = 1;
  vector<int> dep(n + 1, 0);
  vector<int> f(n + 1);
  vector<pair<int, int>> huan(n + 1, {0, 0});
  vector<int> ye;
  int max_dep = 0, max_dep_leaf = 0;
  function<void(int, int, int)> dfs;
  dfs = [&](int u, int fa, int depth) {
    f[u] = fa;
    dep[u] = depth;
    if (max_dep < depth) {
      max_dep = depth;
      max_dep_leaf = u;
    }
    int flag = 0;
    for (auto& v : edg[u]) {
      if (v == fa) continue;
      if (dep[v] != 0) {
        if (huan[u].first)
          huan[u].second = v;
        else
          huan[u].first = v;
        continue;
      }
      flag = 1;
      dfs(v, u, depth + 1);
    }
    if (!flag) ye.push_back(u);
  };
  dfs(1, 0, 1);
  vector<int> Ans;
  if (max_dep >= (n / k)) {
    cout << "PATH\n";
    while (f[max_dep_leaf] != 0) {
      Ans.push_back(max_dep_leaf);
      max_dep_leaf = f[max_dep_leaf];
    }
    Ans.push_back(max_dep_leaf);
    int num = Ans.size();
    cout << num << '\n';
    for (auto val : Ans) cout << val << ' ';
  } else {
    cout << "CYCLES\n";
    int num = 0;
    for (auto leaf : ye) {
      int f1 = huan[leaf].first;
      int f2 = huan[leaf].second;
      if (dep[f1] > dep[f2]) swap(f1, f2);
      int len1 = dep[leaf] - dep[f1] + 1;
      int len2 = dep[leaf] - dep[f2] + 1;
      int len3 = dep[f2] - dep[f1] + 2;
      int tmp_leaf;
      if (len1 % 3) {
        cout << len1 << '\n';
        tmp_leaf = leaf;
        while (tmp_leaf != f[f1]) {
          cout << tmp_leaf << ' ';
          tmp_leaf = f[tmp_leaf];
        }
      } else if (len2 % 3) {
        cout << len2 << '\n';
        tmp_leaf = leaf;
        while (tmp_leaf != f[f2]) {
          cout << tmp_leaf << ' ';
          tmp_leaf = f[tmp_leaf];
        }
      } else {
        cout << len3 << '\n';
        tmp_leaf = f2;
        cout << leaf << ' ';
        while (tmp_leaf != f[f1]) {
          cout << tmp_leaf << ' ';
          tmp_leaf = f[tmp_leaf];
        }
      }
      cout << '\n';
      num++;
      if (num == k) break;
    }
  }
}
