#include <bits/stdc++.h>
using namespace std;
const int maxn = 3e5;
const int maxm = 5e5 + 10;
struct Node {
  int to, next;
} node[maxm << 1];
int tot;
int head[maxn];
void init() {
  memset(head, -1, sizeof(head));
  tot = 0;
}
int maxdeep, maxid;
int fa[maxn];
int deep[maxn];
bool vis[maxn];
vector<int> leaves;
void addedge(int u, int v) {
  node[tot].to = v;
  node[tot].next = head[u];
  head[u] = tot++;
}
void dfs(int x) {
  vis[x] = true;
  int child = 0;
  for (int i = head[x]; i != -1; i = node[i].next) {
    int to = node[i].to;
    if (vis[to]) continue;
    child++;
    fa[to] = x;
    deep[to] = deep[x] + 1;
    if (deep[to] > maxdeep) maxdeep = deep[to], maxid = to;
    dfs(to);
  }
  if (!child) leaves.push_back(x);
}
void Path(int x) {
  printf("%d", x);
  while (fa[x]) printf(" %d", fa[x]), x = fa[x];
  printf("\n");
}
void Cycles(int x) {
  int g1(0), g2(0);
  for (int i = head[x]; ~i; i = node[i].next) {
    int to = node[i].to;
    if (deep[to] < deep[x] - 1) {
      if (!g1)
        g1 = to;
      else if (!g2)
        g2 = to;
      else
        break;
    }
  }
  if (deep[g1] > deep[g2]) swap(g1, g2);
  int L1 = deep[x] - deep[g1] + 1;
  int L2 = deep[x] - deep[g2] + 1;
  int L3 = deep[g2] - deep[g1] + 2;
  int st = 0, ed = 0, L;
  if (L1 % 3)
    st = x, ed = g1, L = L1;
  else if (L2 % 3)
    st = x, ed = g2, L = L2;
  else
    st = g2, ed = g1, L = L3;
  if (st == x) {
    printf("%d\n%d", L, x);
    while (fa[st] != fa[ed]) printf(" %d", fa[st]), st = fa[st];
    printf("\n");
  } else {
    printf("%d\n%d %d", L, x, st);
    while (fa[st] != fa[ed]) printf(" %d", fa[st]), st = fa[st];
    printf("\n");
  }
}
int main() {
  init();
  int n, m, k, u, v;
  scanf("%d%d%d", &n, &m, &k);
  for (int i = 1; i <= m; i++) {
    scanf("%d%d", &u, &v);
    addedge(u, v);
    addedge(v, u);
  }
  fa[1] = 0;
  deep[1] = 1;
  maxdeep = maxid = 1;
  dfs(1);
  if (1ll * maxdeep * k >= n) {
    printf("PATH\n");
    cout << maxdeep << endl;
    Path(maxid);
  } else if ((int)leaves.size() >= k) {
    printf("CYCLES\n");
    for (int i = 0; i < k; i++) {
      Cycles(leaves[i]);
    }
  } else {
    printf("-1\n");
  }
  return 0;
}
