#include <bits/stdc++.h>
using namespace std;
int n, m, k, x, y, H[300005], d, ant[300005];
vector<int> v[300005], st, L;
void dfs(int nod) {
  int ok = 0;
  st.push_back(nod);
  H[nod] = st.size();
  if (H[nod] >= d) {
    cout << "PATH\n";
    cout << st.size() << '\n';
    for (auto it : st) cout << it << ' ';
    exit(0);
  }
  for (auto it : v[nod])
    if (!H[it]) {
      ant[it] = nod;
      dfs(it);
      ok = 1;
    }
  if (!ok) L.push_back(nod);
  st.pop_back();
}
bool _try(int a, int b) {
  if (H[a] < H[b]) swap(a, b);
  if (H[a] - H[b] + 1 >= 3 && (H[a] - H[b] + 1) % 3 != 0) {
    cout << H[a] - H[b] + 1 << '\n';
    int crt = a;
    while (crt != b) {
      cout << crt << ' ';
      crt = ant[crt];
    }
    cout << crt << '\n';
    return 1;
  }
  return 0;
}
bool _try2(int a, int b, int c) {
  if (H[a] < H[b]) swap(a, b);
  if (H[a] - H[b] + 2 >= 3 && (H[a] - H[b] + 2) % 3 != 0) {
    cout << H[a] - H[b] + 2 << '\n';
    int crt = a;
    while (crt != b) {
      cout << crt << ' ';
      crt = ant[crt];
    }
    cout << crt << ' ' << c << '\n';
    return 1;
  }
  return 0;
}
int main() {
  ios::sync_with_stdio(false);
  cin >> n >> m >> k;
  d = n / k + (n % k != 0);
  for (int i = 1; i <= m; i++) {
    cin >> x >> y;
    v[x].push_back(y);
    v[y].push_back(x);
  }
  dfs(1);
  cout << "CYCLES\n";
  for (auto it : L) {
    if (k == 0) break;
    k--;
    if (_try(it, v[it][0])) continue;
    if (_try(it, v[it][1])) continue;
    if (_try(it, v[it][2])) continue;
    if (_try2(v[it][0], v[it][1], it)) continue;
    if (_try2(v[it][0], v[it][2], it)) continue;
    if (_try2(v[it][1], v[it][2], it)) continue;
  }
  return 0;
}
