#include <cstring> #include <iostream> using namespace std; const int N = 200010; int h[N], idx, e[N], ne[N]; int q[N], d[N]; int n, m; void add(int a, int b){ e[idx] = b; ne[idx] = h[a]; h[a] = idx ++; } bool topSort(){ int tt = -1, hh = 0; for(int i = 1; i <= n; i ++){ if(d[i] == 0) q[++ tt] = i; } while(hh <= tt){ int t = q[hh ++]; for(int i = h[t]; i != -1; i = ne[i]){ int j = e[i]; d[j] --; if(d[j] == 0) q[++ tt] = j; } } return tt == n - 1; } int main() { memset(h, -1, sizeof h); cin >> n >> m; while(m --){ int a, b; cin >> a >> b; add(a, b); d[b] ++; } if(topSort()){ for(int i = 0; i < n; i ++){ cout << q[i] << endl; if(i != n - 1) cout << " "; } } else puts("-1"); return 0; }