#include "stdio.h"
#include "string.h"
const int maxn = 105;
int rudu[maxn],map[maxn][maxn],path[maxn*10];
int n,m,k; //代表元
void DFS(int x)
{
for( int i=1;i<=n;i++ )
{
if( map[x][i] )
{
map[x][i]--;
map[i][x]--;
DFS(i);
}
}
path[++k]=x;
}
int main()
{
int i,a,b;
//freopen("data.out","w",stdout);
scanf("%d%d",&n,&m);
for( i=1; i<=m; i++ )
{
scanf("%d%d",&a,&b);
map[a][b]++;
map[b][a]++;
rudu[a]++;
rudu[b]++;
}
if(n == 1 && !m)
{
puts("YES");
puts("1");
return 0;
}
for( i=1;i<=n;i++ ) //判断是否为欧拉团
{
if( rudu[i]&1 || !rudu[i] )
{
puts("NO");
return 0;
}
}
puts("YES");
DFS(1);
for( i=k;i>=1;i-- )
printf("%d ",path[i]);
return 0;
}