#include<bits/stdc++.h>
using namespace std;
vector<int> a[1000005],p1(1000005, 0),p2(1000005, 0);
vector<bool> x(1000005, false);
stack<int> r;
void dfs(int u)
{
while(!a[u].empty())
{
int v=a[u].back();
a[u].pop_back();
dfs(v);
}
r.push(u);
}
int main()
{
int n,m;
cin>>n>>m;
for(int i=0;i<m;i++)
{
int u,v;
cin>>u>>v;
a[u].push_back(v);
p2[u]++;
p1[v]++;
}
int start=0,end=0;
for(int i=1;i<=n;i++)
{
if(p2[i]-p1[i]==1) start++;
else if(p1[i]-p2[i]==1) end++;
else if(p1[i]!=p2[i])
{
cout<<"No";
return 0;
}
}
if (!((start==1&&end==1)(start==0&&end==0)))
{
cout<<"No";
return 0;
}
int yy=1;
while(p1[yy]==p2[yy])
yy++;
dfs(yy);
if(r.size()!=m+1)
{
cout<<"No";
return 0;
}
while(!r.empty())
{
cout<<r.top()<<" ";
r.pop();
}
return 0;
}