玄学60pts
#include<bits/stdc++.h>
#define inf 200005
using namespace std;
int n,m;
struct Edge{
int to;
bool cans;
};
vector<Edge> t[inf];
bool cans[inf];
int ru_du[inf];
int chu_du[inf];
int st[inf];
int cnt;
int lu_jing[inf];
void dfs(int x)
{
for(int i=st[x];i<t[x].size();i++)
{
if(t[x][i].cans==1) continue;
t[x][i].cans=1;
st[x]++;
dfs(t[x][i].to);
}
cnt++;
lu_jing[cnt]=x;
}
int pos;
int chu_ci,ru_ci;
bool cmp(Edge a,Edge b)
{
return a.to<b.to;
}
int main()
{
cin>>n>>m;
for(int i=1;i<=m;i++)
{
int x,y;
cin>>x>>y;
t[x].push_back(Edge{y,0});
ru_du[y]++;
chu_du[x]++;
}
for(int i=1;i<=n;i++)
{
if(abs(ru_du[i]-chu_du[i])>1){
cout<<"No";
return 0;
}
if(chu_du[i]-ru_du[i]==1){
chu_ci++;
pos=i;
}
if(ru_du[i]-chu_du[i]==1){
ru_ci++;
}
}
if((ru_ci==0 && chu_ci==0)||(ru_ci==1 && chu_ci==1))
{
for(int i=1;i<=n;i++) sort(t[i].begin(),t[i].end(),cmp);
dfs(pos);
for(int i=cnt;i>=1;i--) cout<<lu_jing[i]<<" ";
}
else cout<<"No";
return 0;
}