#include <bits/stdc++.h>
using namespace std;
const int N = 2.5 * 1e5 + 5;
int n, m, k;
int d[N];
struct Edge {
  int num;
  int next;
} edge[4 * N];
int tot, last[N];
vector<int> q;
vector<int> ans[N];
vector<int> path;
int anss;
bool flag;
void Add(int i, int j) {
  tot++;
  edge[tot].num = j;
  edge[tot].next = last[i];
  last[i] = tot;
}
void dfs(int i, int deep) {
  if (flag) return;
  d[i] = deep;
  q.push_back(i);
  if (deep > n / k) {
    flag = 1;
    for (int j = q.size() - 1; j >= 0; j--) path.push_back(q[j]);
    return;
  }
  bool flag = 0;
  for (int k = last[i]; k != 0; k = edge[k].next) {
    int v = edge[k].num;
    if (d[v] == 0) {
      dfs(v, deep + 1);
      flag = 1;
    }
  }
  if (flag == 0) {
    anss++;
    int sign1 = 0, sign2 = 0;
    bool sign = 0;
    for (int k = last[i]; k != 0; k = edge[k].next) {
      int v = edge[k].num;
      if (d[v] + 1 == d[i]) continue;
      if ((d[i] - d[v]) % 3 == 2) {
        if (sign1 == 0)
          sign1 = v;
        else
          sign2 = v;
      } else {
        for (int k = q.size() - 1; k >= 0; k--) {
          ans[anss].push_back(q[k]);
          if (q[k] == v) break;
        }
        sign = 1;
        break;
      }
    }
    if (sign == 0) {
      bool en = 0;
      ans[anss].push_back(i);
      for (int k = q.size() - 1; k >= 0; k--) {
        if ((q[k] == sign1 || q[k] == sign2) && en == 0) {
          en = 1;
          ans[anss].push_back(q[k]);
          continue;
        }
        if (en) ans[anss].push_back(q[k]);
        if ((q[k] == sign1 || q[k] == sign2) && en == 1) {
          en = 0;
          break;
        }
      }
    }
  }
  q.pop_back();
}
int main() {
  std::ios::sync_with_stdio(0);
  cin >> n >> m >> k;
  for (int i = 1; i <= m; i++) {
    int u, v;
    cin >> u >> v;
    Add(u, v);
    Add(v, u);
  }
  dfs(1, 1);
  if (flag) {
    cout << "PATH\n" << path.size() << endl;
    for (int j = path.size() - 1; j >= 0; j--) cout << path[j] << " ";
  } else {
    cout << "CYCLES\n";
    for (int i = 1; i <= k; i++) {
      cout << ans[i].size() << endl;
      ;
      for (int j = 0; j <= ans[i].size() - 1; j++) cout << ans[i][j] << " ";
      cout << endl;
    }
  }
}
