#include <bits/stdc++.h>
using namespace std;
const int maxn = 2.5e5 + 3;
const int maxm = 5e5 + 5;
struct edge {
  int to, next;
} G[maxm << 1];
int head[maxn], dep[maxn], par[maxn], leaf[maxn], dfn[maxn], max_node, tot,
    leaf_tot, idx, max_dep;
void init() {
  memset(head, -1, sizeof(head));
  tot = leaf_tot = idx = 0;
  max_dep = -1;
}
void addedge(int u, int v) {
  G[tot].to = v;
  G[tot].next = head[u];
  head[u] = tot++;
  G[tot].to = u;
  G[tot].next = head[v];
  head[v] = tot++;
}
void dfs(int u, int d) {
  dfn[u] = ++idx;
  dep[u] = d;
  if (dep[u] > max_dep) {
    max_dep = dep[u];
    max_node = u;
  }
  bool isleaf = true;
  for (int i = head[u]; ~i; i = G[i].next) {
    int v = G[i].to;
    if (!dfn[v]) {
      isleaf = false;
      par[v] = u;
      dfs(v, d + 1);
    }
  }
  if (isleaf) leaf[++leaf_tot] = u;
}
int main() {
  init();
  int n, m, k;
  scanf("%d%d%d", &n, &m, &k);
  for (int i = 0; i < m; ++i) {
    int u, v;
    scanf("%d%d", &u, &v);
    addedge(u, v);
  }
  dfs(1, 1);
  if (max_dep >= (n + k - 1) / k) {
    puts("PATH");
    printf("%d\n", max_dep);
    int u = max_node;
    while (u) {
      printf("%d%c", u, " \n"[u == 1]);
      u = par[u];
    }
  } else {
    puts("CYCLES");
    for (int i = 1; i <= k; ++i) {
      int u = leaf[i];
      int a = -1, b = -1;
      for (int j = head[u]; ~j; j = G[j].next) {
        int v = G[j].to;
        if (par[u] != v && par[v] != u) {
          if (a == -1)
            a = v;
          else if (b == -1) {
            b = v;
            break;
          }
        }
      }
      if (dep[a] < dep[b]) swap(a, b);
      if ((dep[u] - dep[a] + 1) % 3 != 0) {
        printf("%d\n", dep[u] - dep[a] + 1);
        for (;;) {
          printf("%d%c", u, " \n"[u == a]);
          if (u == a) break;
          u = par[u];
        }
      } else if ((dep[u] - dep[b] + 1) % 3 != 0) {
        printf("%d\n", dep[u] - dep[b] + 1);
        for (;;) {
          printf("%d%c", u, " \n"[u == b]);
          if (u == b) break;
          u = par[u];
        }
      } else {
        printf("%d\n", dep[a] - dep[b] + 2);
        printf("%d ", u);
        for (;;) {
          printf("%d%c", a, " \n"[a == b]);
          if (a == b) break;
          a = par[a];
        }
      }
    }
  }
  return 0;
}
