#include <bits/stdc++.h>
using namespace std;
int n, m, kk, tar;
int num_cycs;
int depth[250001];
vector<int> adj[250001];
vector<int> cycs[130000];
vector<int> pth;
bool visited[250001];
vector<int> tmp_pth;
void dfs(int cur, int dep) {
  int i, j, k;
  depth[cur] = dep;
  if (dep == tar) {
    pth.push_back(cur);
    return;
  }
  tmp_pth.push_back(cur);
  bool rep = true;
  for (i = 0; i < adj[cur].size(); i++) {
    if (!visited[adj[cur][i]]) {
      rep = false;
      visited[adj[cur][i]] = true;
      dfs(adj[cur][i], dep + 1);
      if (pth.size()) {
        pth.push_back(cur);
        return;
      }
      if (num_cycs >= kk) return;
    }
  }
  if (rep) {
    j = 0;
    for (i = 0; i < adj[cur].size(); i++) {
      if (visited[adj[cur][i]] && dep > depth[adj[cur][i]] + 1) {
        if ((dep - depth[adj[cur][i]] + 1) % 3 == 0) {
          if (j)
            break;
          else
            j = adj[cur][i];
        } else {
          for (k = tmp_pth.size() - 1; tmp_pth[k] != adj[cur][i]; k--)
            cycs[num_cycs].push_back(tmp_pth[k]);
          cycs[num_cycs++].push_back(tmp_pth[k]);
          tmp_pth.pop_back();
          return;
        }
      }
    }
    i = adj[cur][i];
    cycs[num_cycs].push_back(cur);
    for (k = tmp_pth.size() - 1; tmp_pth[k] != i && tmp_pth[k] != j; k--)
      ;
    cycs[num_cycs].push_back(tmp_pth[k]);
    for (k--; tmp_pth[k] != i && tmp_pth[k] != j; k--)
      cycs[num_cycs].push_back(tmp_pth[k]);
    cycs[num_cycs++].push_back(tmp_pth[k]);
  }
  tmp_pth.pop_back();
}
int main() {
  int i, j, k;
  scanf("%d %d %d", &n, &m, &kk);
  for (i = 0; i < m; i++) {
    scanf("%d %d", &j, &k);
    adj[j].push_back(k);
    adj[k].push_back(j);
  }
  tar = n / kk + (n % kk > 0);
  num_cycs = 0;
  visited[1] = true;
  dfs(1, 1);
  if (pth.size()) {
    printf("PATH\n%d\n", pth.size());
    for (i = 0; i < pth.size(); i++) printf("%d ", pth[i]);
    printf("\n");
  } else {
    printf("CYCLES\n");
    for (i = 0; i < num_cycs; i++) {
      printf("%d\n", cycs[i].size());
      for (j = 0; j < cycs[i].size(); j++) printf("%d ", cycs[i][j]);
      printf("\n");
    }
  }
  return 0;
}
