#include<bits/stdc++.h>
#define int long long
#define N (int)1e5+10
using namespace std;
int n,m,in[N],out[N];
vector <int> g[N];
vector <bool> vis[N];
int c1=-1,c2=-1;
queue <int> q;
void output()
{
while(!q.empty()){
cout<<q.front()<<' ';
q.pop();
}exit(0);
return ;
}
void dfs(int now,int goal)
{
q.push(now);
if(q.size()==m+1){output();}
int len=g[now].size();
int minn=n+1;
for(int i=0;i<len;i++)
if(vis[now][i]==false)
minn=min(minn,g[now][i]);
for(int i=0;i<len;i++)
if(g[now][i]==minn){
vis[now][i]=true;
break;
}
dfs(minn,goal);
}
signed main()
{
cin>>n>>m;
for(int i=1;i<=m;i++)
{
int u,v;
cin>>u>>v;
g[u].push_back(v);
vis[u].push_back(false);
in[v]++;out[u]++;
}
for(int i=1;i<=n;i++)
{
if(in[i]!=out[i])
{
if(abs(in[i]-out[i])!=1)
return cout<<"No",0;
int c=in[i]-out[i];
if(c==1)c1=i;
else c2=i;
}
}
if(!(c1==-1&&c2==-1||c1!=-1&&c2!=-1))
return cout<<"No",0;
dfs((c2==-1)?1:c2,(c2==-1)?1:c1);
return 0;
}