#include <bits/stdc++.h>
using namespace std;
const int N = 250001;
const int M = 1000001;
int n, m, k, cnt, maxid, top;
int first[N], nxt[M], to[M];
int fa[N], dep[N], son[N], sta[N];
bool vis[N];
void add(int a, int b) {
  to[++cnt] = b;
  nxt[cnt] = first[a];
  first[a] = cnt;
  return;
}
void dfs(int x) {
  vis[x] = 1;
  if (dep[x] > dep[maxid]) maxid = x;
  for (int i = first[x]; i; i = nxt[i])
    if (!vis[to[i]] && to[i] != fa[x]) {
      fa[to[i]] = x, son[x]++;
      dep[to[i]] = dep[x] + 1;
      dfs(to[i]);
    }
  return;
}
void out() {
  for (int i = 1; i < top; i++) printf("%d ", sta[i]);
  printf("%d\n", sta[top]), top = 0;
  return;
}
void path(int st, int ed) {
  while (st != ed) sta[++top] = st, st = fa[st];
  sta[++top] = ed;
  return;
}
int main() {
  scanf("%d%d%d", &n, &m, &k);
  for (int a, b, i = 1; i <= m; i++) {
    scanf("%d%d", &a, &b);
    add(a, b), add(b, a);
  }
  dep[1] = 1, dfs(1);
  if (dep[maxid] >= n / k) {
    printf("PATH\n%d\n", dep[maxid]);
    while (maxid != 1) printf("%d ", maxid), maxid = fa[maxid];
    printf("1\n");
  } else {
    int t[3];
    printf("CYCLES\n");
    for (int i = 1; k && i <= n; i++)
      if (!son[i]) {
        int tmp = 0;
        for (int j = first[i]; tmp <= 2; j = nxt[j])
          if (to[j] != fa[i]) t[++tmp] = to[j];
        if (dep[t[1]] > dep[t[2]]) swap(t[1], t[2]);
        if ((dep[i] - dep[t[1]] + 1) % 3 != 0)
          printf("%d\n", dep[i] - dep[t[1]] + 1), path(i, t[1]), out();
        else if ((dep[i] - dep[t[2]] + 1) % 3 != 0)
          printf("%d\n", dep[i] - dep[t[2]] + 1), path(i, t[2]), out();
        else
          printf("%d\n", dep[t[2]] - dep[t[1]] + 2), path(t[2], t[1]),
              sta[++top] = i, out();
        k--;
      }
  }
  return 0;
}
