#include <bits/stdc++.h>
const int N = 2.5e5 + 5, M = 1e6 + 5;
int h[N], f[N], g[N], q[N], r[N], d[N], t[M], l[M], c, p;
void add() {
  int x, y;
  scanf("%d%d", &x, &y);
  t[++c] = y, l[c] = h[x], h[x] = c;
  t[++c] = x, l[c] = h[y], h[y] = c;
}
void dfs(int x) {
  bool k = 0;
  g[x] = 1;
  for (int i = h[x]; i; i = l[i]) {
    if (g[t[i]]) continue;
    k = 1;
    d[t[i]] = d[x] + 1;
    f[t[i]] = x;
    dfs(t[i]);
    if (g[x] < g[t[i]] + 1) g[x] = g[t[i]] + 1, r[x] = t[i];
  }
  if (!k) q[++c] = x;
}
void lca(int x, int y) {
  if (d[x] < d[y]) std::swap(x, y);
  for (; d[x] - d[y]; x = f[x]) g[++c] = x;
  for (; x != y; x = f[x], y = f[y]) g[++c] = x, r[++p] = y;
  g[++c] = x;
}
bool print() {
  if (c + p < 3 || !((c + p) % 3)) return 0;
  printf("%d\n", c + p);
  for (int i = 1; i <= c; ++i) printf("%d ", g[i]);
  for (int i = p; i; --i) printf("%d ", r[i]);
  return puts(""), 1;
}
int main() {
  int n, m, k, x, y, w;
  scanf("%d%d%d", &n, &m, &k);
  for (int i = 1; i <= m; ++i) add();
  c = 0;
  dfs(1);
  if (1ll * g[1] * k >= n) {
    printf("PATH\n%d\n", g[1]);
    for (int i = 1; i; i = r[i]) printf("%d ", i);
    return 0;
  }
  puts("CYCLES");
  for (int j = 1; j <= k; ++j) {
    x = q[j], y = w = 0;
    for (int i = h[x]; i; i = l[i]) {
      if (t[i] == f[x]) continue;
      if (!y)
        y = t[i];
      else if (!w) {
        w = t[i];
        break;
      }
    }
    c = p = 0;
    lca(x, y);
    if (print()) continue;
    c = p = 0;
    lca(x, w);
    if (print()) continue;
    c = 1, p = 0, g[1] = x;
    lca(y, w);
    print();
  }
  return 0;
}
