#include <iostream>
#include <vector>
using namespace std;

const int MAXN = 100005;
int parent[MAXN];
int degree[MAXN];
int find(int u) {
    if (parent[u] != u) {
        parent[u] = find(parent[u]);
    }
    return parent[u];
}
void unionSet(int u, int v) {
    int pu = find(u);
    int pv = find(v);
    if (pu != pv) {
        parent[pv] = pu;
    }
}

int main() {
    int n, m;
    cin >> n >> m;
    for (int i = 1; i <= n; i++) {
        parent[i] = i;
        degree[i] = 0;
    }
    for (int i = 0; i < m; i++) {
        int u, v;
        cin >> u >> v;
        degree[u]++;
        degree[v]++;
        unionSet(u, v);
    }
     if (m == 0) {
        cout << (n == 1 ? "Eulerian Circuit" : "No Eulerian Path") << endl;
        return 0;
    }
/**************************************************************
	Problem: 2055
	User: wuzihang
	Language: C++
	Result: Compile Error
****************************************************************/