#include <bits/stdc++.h>
using namespace std;
const long long MAXN = 3e5 + 10;
int n, m, k, par[MAXN], h[MAXN], cnt;
bool visited[MAXN], b;
vector<int> g[MAXN], ans;
void print(int a, int b) {
  int x = a;
  cout << x << ' ';
  while (x != b && x != 0) {
    x = par[x];
    cout << x << ' ';
  }
  cout << '\n';
}
void dfs(int v, int p, int hi, bool c) {
  visited[v] = true;
  h[v] = hi;
  par[v] = p;
  bool x = true;
  if (b && hi >= (n + k - 1) / k) {
    cout << "PATH" << '\n' << hi << '\n';
    print(v, 1);
    b = 0;
  }
  for (auto u : g[v]) {
    if (!visited[u]) {
      x = false;
      dfs(u, v, hi + 1, c);
    }
  }
  if (b && c && x && cnt < k) {
    cnt++;
    ans.clear();
    for (auto u : g[v]) {
      if (u != p && (h[v] - h[u] + 1) % 3 != 0) {
        cout << h[v] - h[u] + 1 << '\n';
        print(v, u);
        return;
      } else if (u != p) {
        ans.push_back(u);
      }
    }
    int minn, maxx;
    if (h[ans[0]] < h[ans[1]]) {
      minn = ans[0];
      maxx = ans[1];
    } else {
      minn = ans[1];
      maxx = ans[0];
    }
    cout << h[maxx] - h[minn] + 2 << '\n' << v << ' ';
    print(maxx, minn);
  }
}
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  cin >> n >> m >> k;
  for (int i = 0; i < m; i++) {
    int u, v;
    cin >> u >> v;
    g[v].push_back(u);
    g[u].push_back(v);
  }
  b = true;
  dfs(1, 0, 1, 0);
  for (int i = 1; i <= n; i++) {
    visited[i] = false;
  }
  if (b) {
    cout << "CYCLES" << '\n';
    dfs(1, 0, 1, 1);
  }
  return 0;
}
