#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
****************************************************************/