#include <iostream> #include <vector> #include <queue> using namespace std; int N = 2e5 +10; vector<vector<int>> edges(N); vector<int> ret; int n,m; int main() { int in[N]; cin>>n>>m; int a,b; while(m--) { cin>>a>>b; edges[a].push_back(b); in[b]++; } queue<int> q; for(int i=1;i<=n;i++) { if(in[i]==0) { q.push(i); } } while(q.size()) { int x = q.front(); q.pop(); ret.push_back(x); for(auto y : edges[x]) { if(--in[y]==0) { q.push(y); } } } if(ret.size()==n) { for(int i =0;i<n-1;i++) { cout<<ret[i]<<" "; } cout<<ret[n-1]<<endl; } else { cout<<-1<<endl; } return 0; } // 64 位输出请用 printf("%lld")