#include <bits/stdc++.h>
using namespace std;
const long long maxn = 5e5 + 50, inf = 1e18;
inline long long read() {
  char c = getchar();
  long long ans = 0, f = 0;
  for (; c < '0' || c > '9'; c = getchar()) f = (c == '-');
  for (; c >= '0' && c <= '9'; c = getchar()) (ans *= 10) += c - '0';
  return f ? -ans : ans;
}
inline void chkmax(long long &x, long long y) { x = x > y ? x : y; }
inline void chkmin(long long &x, long long y) { x = x < y ? x : y; }
inline long long max(long long x, long long y) { return x > y ? x : y; }
inline long long min(long long x, long long y) { return x < y ? x : y; }
long long n, m, k;
long long head[maxn], cnt;
long long dep[maxn], fa[maxn];
long long lev[maxn], top;
struct edge {
  long long to, next;
} e[maxn << 1];
void add(long long x, long long y) {
  e[++cnt] = (edge){y, head[x]};
  head[x] = cnt;
}
void dfs(long long x) {
  bool l = 0;
  dep[x] = dep[fa[x]] + 1;
  for (long long i = head[x], to = e[i].to; i; i = e[i].next, to = e[i].to)
    if (!dep[to]) l = 1, fa[to] = x, dfs(to);
  if (!l) lev[++top] = x;
}
void work_path(long long x, long long cut) {
  printf("%lld ", x);
  if (x != cut && fa[x]) work_path(fa[x], cut);
}
long long el[maxn], tot;
void work_cir(long long x) {
  tot = 0;
  for (long long i = head[x], to = e[i].to; i; i = e[i].next, to = e[i].to) {
    if (to == fa[x]) continue;
    el[++tot] = i;
    if ((dep[x] - dep[to] + 1) % 3) {
      printf("%lld\n", dep[x] - dep[to] + 1);
      work_path(x, to);
      puts("");
      return;
    }
  }
  if (dep[e[el[1]].to] < dep[e[el[2]].to]) swap(el[1], el[2]);
  printf("%lld\n%lld ", dep[e[el[1]].to] - dep[e[el[2]].to] + 2, x);
  work_path(e[el[1]].to, e[el[2]].to);
  puts("");
}
int main() {
  n = read();
  m = read();
  k = read();
  for (long long i = (1), upnum = (m); i <= upnum; i++) {
    long long x = read(), y = read();
    add(x, y);
    add(y, x);
  }
  dfs(1);
  for (long long i = (1), upnum = (n); i <= upnum; i++) {
    if (dep[i] > n / k) {
      printf("PATH\n%lld\n", dep[i]);
      work_path(i, 0);
      return 0;
    }
  }
  puts("CYCLES");
  for (long long i = (1), upnum = (k); i <= upnum; i++) work_cir(lev[i]);
  return 0;
}
