#include<bits/stdc++.h>
using namespace std;
#define rep(x,y,z) for(int x=(y);(x)<(z);x++)
const int maxn=1e3;
int m,n,x,y,flag=1;
int d[maxn],vis[maxn];
int cnt=0;
vector<int> g[maxn];
void dfs(int u){
if(vis[u]) return ;
vis[u]=1;
rep(i,0,g[u].size()){
int v=g[u][i];
dfs(v);
}
}
int main(){
cin>>n>>m;
rep(i,0,m){
cin>>x>>y;
g[x].push_back(y);
g[y].push_back(x);
d[x]++,d[y]++;
}
dfs(1);
rep(i,1,n+1) flag&=vis[i];
rep(i,1,n+1){
cnt+=(d[i]&1);
cout<<d[i];
if(i==n) cout<<"\n";
else cout<<" ";
}
if(flag){
if(cnt==0) cout<<"Eulerian\n";
else if(cnt==2) cout<<"Semi-Eulerian\n";
else cout<<"Non-Eulerian\n";
}
else cout<<"Non-Eulerian\n";
return 0;
}