#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;
}
