#include <bits/stdc++.h>
using namespace std;
const int maxn = 25e4 + 1;
const long long inf = 1e18;
int n, m, k, h[maxn], par[maxn], tests, ted;
bool vis[maxn];
vector<int> e[maxn];
vector<int> ans[maxn];
void path_ans(int v) {
  cout << "PATH" << '\n';
  cout << tests << '\n';
  for (int test = 1; test <= tests; test++) {
    cout << v << " ";
    v = par[v];
  }
  cout << endl;
  return;
}
void dfs(int v) {
  vis[v] = 1;
  int ch = 0;
  for (auto u : e[v]) {
    if (vis[u] == 0) {
      ch++;
      par[u] = v;
      h[u] = h[v] + 1;
      if (h[u] >= tests) {
        path_ans(u);
        exit(0);
      }
      dfs(u);
    }
  }
  if (ch == 0 && ted < k) {
    int t1 = 0, t2 = 0;
    for (auto u : e[v]) {
      if (u != par[v]) {
        if (h[u] > h[t1]) {
          t2 = t1;
          t1 = u;
        } else if (h[u] > h[t2]) {
          t2 = u;
        }
      }
    }
    if ((h[v] - h[t1] + 1) % 3 != 0) {
      int x = v;
      while (x != par[t1]) {
        ans[ted].push_back(x);
        x = par[x];
      }
    } else if ((h[v] - h[t2] + 1) % 3 != 0) {
      int x = v;
      while (x != par[t2]) {
        ans[ted].push_back(x);
        x = par[x];
      }
    } else {
      ans[ted].push_back(v);
      int x = t1;
      while (x != par[t2]) {
        ans[ted].push_back(x);
        x = par[x];
      }
    }
    ted++;
  }
  return;
}
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  cin >> n >> m >> k;
  tests = (n + k - 1) / k;
  for (int i = 1; i <= m; i++) {
    int t1, t2;
    cin >> t1 >> t2;
    e[t1].push_back(t2);
    e[t2].push_back(t1);
  }
  h[1] = 1;
  dfs(1);
  cout << "CYCLES" << '\n';
  for (int i = 0; i < k; i++) {
    cout << ans[i].size() << '\n';
    for (auto u : ans[i]) {
      cout << u << ' ';
    }
    cout << '\n';
  }
  return 0;
}
