#include<bits/stdc++.h>
using namespace std;
const int N=1e6+5;
int n,m,ans[N],cnt,in[N],out[N],head[N];
vector<int> nbr[N];
void dfs(int x)
{
for(int i=head[x];i<nbr[x].size();i=head[x])
{
int y=nbr[x][i];
head[x]=i+1;
dfs(y);
}
ans[++cnt]=x;
}
int main()
{
cin>>n>>m;
for(int i=1;i<=m;i++)
{
int u,v;
cin>>u>>v;
nbr[u].push_back(v);
in[v]++;
out[u]++;
}
int start=-1,c1=0,c2=0;
for(int i=1;i<=n;i++)
{
if(out[i]-in[i]==1)
c1++,start=i;
if(in[i]-out[i]==1)
c2++;
}
if((!c1&&!c2)==false&&(c1&&c2)==false)
return cout<<"No\n",0;
for(int i=1;i<=n;i++)
sort(nbr[i].begin(),nbr[i].end());
if(start==-1)
for(int i=1;i<=n;i++)
if(in[i]||out[i])
{
start=i;
break;
}
dfs(start);
for(int i=cnt;i>=1;i--)
cout<<ans[i]<<" ";
return 0;
}