#include <bits/stdc++.h>
using namespace std;
const long double eps = 1e-13;
const long double PI = acos(-1);
const int INF = (int)1e9;
const long long INFF = (long long)1e18;
const int mod = (int)1e9 + 7;
const int MXN = (int)3e5 + 7;
bitset<MXN> ck;
vector<int> edge[MXN];
int prt[MXN], dep[MXN];
int len, cntp;
vector<int> ans1;
vector<int> ans2[MXN];
void dfs(int u, int pa, int dpt) {
  prt[u] = pa;
  dep[u] = dpt;
  ck[u] = 1;
  int num = 0;
  int v1 = -1, v2 = -1;
  for (int v : edge[u]) {
    if (v == pa) continue;
    if (!ck[v]) {
      num++;
      dfs(v, u, dpt + 1);
    } else {
      if (v1 == -1)
        v1 = v;
      else
        v2 = v;
    }
  }
  if (!num) {
    if (dpt >= len) {
      if (!ans1.empty()) return;
      int v = u;
      for (int i = dpt; i >= 1; i--) {
        ans1.push_back(v);
        v = prt[v];
      }
    } else {
      cntp++;
      assert(v1 != -1);
      assert(v2 != -1);
      if ((dpt - dep[v1] + 1) % 3) {
        int v = u;
        while (v != v1) {
          ans2[cntp].push_back(v);
          v = prt[v];
        }
        ans2[cntp].push_back(v1);
      } else if ((dpt - dep[v2] + 1) % 3) {
        int v = u;
        while (v != v2) {
          ans2[cntp].push_back(v);
          v = prt[v];
        }
        ans2[cntp].push_back(v2);
      } else {
        if (dep[v1] > dep[v2]) swap(v1, v2);
        ans2[cntp].push_back(u);
        int v = v2;
        while (v != v1) {
          ans2[cntp].push_back(v);
          v = prt[v];
        }
        ans2[cntp].push_back(v1);
      }
    }
  }
}
int main() {
  int n, m, k;
  scanf("%d %d %d", &n, &m, &k);
  len = (n + k - 1) / k;
  for (int i = 1; i <= m; i++) {
    int u, v;
    scanf("%d %d", &u, &v);
    edge[u].push_back(v);
    edge[v].push_back(u);
  }
  for (int i = 1; i <= n; i++) {
    if (!ck[i]) dfs(i, 0, 1);
  }
  if (!ans1.empty()) {
    puts("PATH");
    printf("%d\n", (int)(ans1).size());
    for (int i = 0; i < (int)(ans1).size(); i++)
      printf("%d%c", ans1[i], " \n"[i == (int)(ans1).size() - 1]);
  } else if (cntp >= k) {
    puts("CYCLES");
    for (int j = 1; j <= k; j++) {
      printf("%d\n", (int)(ans2[j]).size());
      for (int i = 0; i < (int)(ans2[j]).size(); i++)
        printf("%d%c", ans2[j][i], " \n"[i == (int)(ans2[j]).size() - 1]);
    }
  } else {
    assert(0);
  }
  return 0;
}
