#include <bits/stdc++.h>
using namespace std;
vector<int> adj_list[100];
int visited[100];
bool DFS(int currnode, int par) {
visited[currnode] = 1;
for (int i = 0; i < adj_list[currnode].size(); i++) {
int child = adj_list[currnode][i];
if (!visited[child]) {
if (DFS(child, currnode)) {
return true; // Cycle found in recursion
}
} else if (child != par) {
return true; // Found a back edge → cycle
}
}
return false; // No cycle in this path
}
int main() {
int node, edge;
cin >> node >> edge;
for (int i = 0; i < edge; i++) {
int u, v;
cin >> u >> v;
adj_list[u].push_back(v);
adj_list[v].push_back(u);
}
bool foundCycle = false;
for (int i = 1; i <= node; i++) {
if (!visited[i]) {
if (DFS(i, -1)) {
foundCycle = true;
break;
}
}
}
if (foundCycle)
cout << "Cycle detected" << endl;
else
cout << "No cycle detected" << endl;
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgp2ZWN0b3I8aW50PiBhZGpfbGlzdFsxMDBdOwppbnQgdmlzaXRlZFsxMDBdOwoKYm9vbCBERlMoaW50IGN1cnJub2RlLCBpbnQgcGFyKSB7CiAgICB2aXNpdGVkW2N1cnJub2RlXSA9IDE7CgogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBhZGpfbGlzdFtjdXJybm9kZV0uc2l6ZSgpOyBpKyspIHsKICAgICAgICBpbnQgY2hpbGQgPSBhZGpfbGlzdFtjdXJybm9kZV1baV07CiAgICAgICAgaWYgKCF2aXNpdGVkW2NoaWxkXSkgewogICAgICAgICAgICBpZiAoREZTKGNoaWxkLCBjdXJybm9kZSkpIHsKICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOyAgLy8gQ3ljbGUgZm91bmQgaW4gcmVjdXJzaW9uCiAgICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgaWYgKGNoaWxkICE9IHBhcikgewogICAgICAgICAgICByZXR1cm4gdHJ1ZTsgIC8vIEZvdW5kIGEgYmFjayBlZGdlIOKGkiBjeWNsZQogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gZmFsc2U7ICAvLyBObyBjeWNsZSBpbiB0aGlzIHBhdGgKfQoKaW50IG1haW4oKSB7CiAgICBpbnQgbm9kZSwgZWRnZTsKICAgIGNpbiA+PiBub2RlID4+IGVkZ2U7CgogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBlZGdlOyBpKyspIHsKICAgICAgICBpbnQgdSwgdjsKICAgICAgICBjaW4gPj4gdSA+PiB2OwogICAgICAgIGFkal9saXN0W3VdLnB1c2hfYmFjayh2KTsKICAgICAgICBhZGpfbGlzdFt2XS5wdXNoX2JhY2sodSk7CiAgICB9CgogICAgYm9vbCBmb3VuZEN5Y2xlID0gZmFsc2U7CgogICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gbm9kZTsgaSsrKSB7CiAgICAgICAgaWYgKCF2aXNpdGVkW2ldKSB7CiAgICAgICAgICAgIGlmIChERlMoaSwgLTEpKSB7CiAgICAgICAgICAgICAgICBmb3VuZEN5Y2xlID0gdHJ1ZTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIGlmIChmb3VuZEN5Y2xlKQogICAgICAgIGNvdXQgPDwgIkN5Y2xlIGRldGVjdGVkIiA8PCBlbmRsOwogICAgZWxzZQogICAgICAgIGNvdXQgPDwgIk5vIGN5Y2xlIGRldGVjdGVkIiA8PCBlbmRsOwoKICAgIHJldHVybiAwOwp9Cg==