#include <bits/stdc++.h>
using namespace std;
const int N = 3e5 + 10;
int n, m, k;
vector<int> v[N];
int vis[N];
int depth[N], maxdepth, point, father[N];
int siz[N], id;
void dfs(int son, int fa, int deep) {
  siz[son] = 1;
  vis[son] = 1;
  father[son] = fa;
  depth[son] = deep;
  if (maxdepth < deep) {
    maxdepth = deep;
    point = son;
  }
  for (int i = 0; i < v[son].size(); i++) {
    if (vis[v[son][i]]) continue;
    siz[son] = 0;
    dfs(v[son][i], son, deep + 1);
  }
}
int main() {
  scanf("%d%d%d", &n, &m, &k);
  for (int i = 1; i <= m; i++) {
    int x, y;
    scanf("%d%d", &x, &y);
    v[x].push_back(y);
    v[y].push_back(x);
  }
  dfs(1, 0, 0);
  if (maxdepth >= n / k) {
    printf("PATH\n");
    printf("%d\n", maxdepth + 1);
    printf("%d ", point);
    while (point = father[point]) printf("%d ", point);
    printf("\n");
  } else {
    printf("CYCLES\n");
    int cnt = 0;
    for (int i = 1; i <= n; i++) {
      if (siz[i] != 1) continue;
      vector<int> line;
      int line_last = i;
      line.push_back(line_last);
      while (line_last = father[line_last]) line.push_back(line_last);
      reverse(line.begin(), line.end());
      vector<int> v_ans[5];
      int last = line.back();
      int p1 = -1, p2 = -1;
      for (int j = 0; j < v[last].size(); j++) {
        if (father[last] == v[last][j]) continue;
        if (p1 == -1)
          p1 = v[last][j];
        else if (p2 == -1)
          p2 = v[last][j];
        else
          break;
      }
      if (depth[p1] > depth[p2]) swap(p1, p2);
      for (int j = depth[p1]; j < line.size(); j++) v_ans[1].push_back(line[j]);
      for (int j = depth[p2]; j < line.size(); j++) v_ans[2].push_back(line[j]);
      for (int j = depth[p1]; j <= depth[p2]; j++) v_ans[3].push_back(line[j]);
      v_ans[3].push_back(last);
      int flag = 0;
      for (int j = 1; j <= 3; j++) {
        int len = v_ans[j].size();
        if (len > 3 && len % 3 != 0) flag = j;
        if (flag) break;
      }
      reverse(v_ans[flag].begin(), v_ans[flag].end());
      if (flag == 0) continue;
      printf("%d\n", v_ans[flag].size());
      for (int j = 0; j < v_ans[flag].size(); j++)
        printf("%d ", v_ans[flag][j]);
      printf("\n");
      cnt++;
      if (cnt == k) break;
    }
  }
}
