#include<bits/stdc++.h>
using namespace std;
long long n,m,d[200010],u,v,visit[200010],start[200010];
vector<vector<int> > a(2000001);
//visit start a 0 1 2 3 4 5
// 1 1 2 3
// 1 2 1
//1 0 3 4
// 0 4 2
// 0 5
void dfs(int x){
cout<<x<<" ";
if(start[x]==a[x].size()) return;
if(visit[x]==1){
cout<<x<<" ";
visit[x]=0;
}
start[x]=start[x]+1;
dfs(a[x][start[x-1]]);
}
int main(){
cin>>n>>m;
for(int i=1;i<=m;i++)
{
cin>>u>>v;
if(u==v) visit[u]=1;
else{
d[u]++;
d[v]++;
a[u].push_back(v);
}
}
long long temp=0,first=INT_MAX;//奇数数量
for(int i=1;i<=n;i++){
if(d[i]%2!=0) {
first=min(first,d[i]);
temp++;
}
}
if(temp!=0&&temp!=2){
cout<<"No";
return 0;
}
for(int i=1;i<=n;i++){//每一行
if(a[i].size()>0){
sort(a[i].begin(),a[i].end());
}
}
if(temp==2) dfs(first);
else dfs(1);
return 0;
}
/**************************************************************
Problem: 1000
User: zhuangxiangyu
Language: C++
Result: Runtime Error
****************************************************************/