#include <bits/stdc++.h>
using namespace std;
const int N = 2e6 + 10, ha = 137, mod = 1e9 + 7;
int n, m, k;
vector<int> G[N];
vector<int> H[N];
int de[N], fa[N];
bool vis[N];
void dfs(int x) {
  for (int y : H[x]) {
    if (de[y]) continue;
    vis[x] = 1;
    fa[y] = x;
    G[x].push_back(y);
    G[y].push_back(x);
    de[y] = de[x] + 1;
    dfs(y);
  }
}
int de2[N], fa2[N];
void dfs2(int x, int f) {
  for (int y : G[x]) {
    if (y == f) continue;
    fa2[y] = x;
    de2[y] = de2[x] + 1;
    dfs2(y, x);
  }
}
void solve(int x, int y) {
  if (de[x] < de[y]) swap(x, y);
  while (x != fa[y]) {
    printf("%d ", x);
    x = fa[x];
  }
}
int main() {
  cin >> n >> m >> k;
  for (int i = 1, u, v; i <= m; i++) {
    scanf("%d%d", &u, &v);
    H[u].push_back(v);
    H[v].push_back(u);
  }
  de[1] = 1;
  dfs(1);
  int mx = 0;
  for (int i = 1; i <= n; i++)
    if (de[i] > de[mx]) mx = i;
  de2[mx] = 1;
  dfs2(mx, 0);
  mx = 0;
  for (int i = 1; i <= n; i++)
    if (de2[i] > de2[mx]) mx = i;
  if (de2[mx] >= n / k) {
    printf("PATH\n");
    printf("%d\n", de2[mx]);
    while (mx != 0) {
      printf("%d ", mx);
      mx = fa2[mx];
    }
    return 0;
  }
  printf("CYCLES\n");
  for (int i = 1; i <= n; i++) {
    if (!vis[i] && k) {
      k--;
      int f1 = 0, f2 = 0;
      for (int y : H[i]) {
        if (y != fa[i]) {
          if (f1) {
            f2 = y;
            break;
          } else
            f1 = y;
        }
      }
      if ((abs(de[f1] - de[i]) + 1) % 3) {
        printf("%d\n", abs(de[f1] - de[i]) + 1);
        solve(i, f1);
      } else if ((abs(de[f2] - de[i]) + 1) % 3) {
        printf("%d\n", abs(de[f2] - de[i]) + 1);
        solve(i, f2);
      } else {
        printf("%d\n", abs(de[f1] - de[f2]) + 2);
        printf("%d ", i);
        solve(f2, f1);
      }
      printf("\n");
    }
  }
  return 0;
}
