#include #include #include using namespace std; int main(){ int n, m; cin >> n >> m; vector> adj(n); vector degree(n, 0); for(int i = 0; i < m; i++){ int u, v; cin >> u >> v; adj[u].push_back(v); degree[v]++; } priority_queue, greater> pq; for(int i = 0; i < n; i++){ if(degree[i] == 0){ pq.push(i); } } vector ans; while(!pq.empty()){ int u = pq.top(); pq.pop(); ans.push_back(u); for(int v : adj[u]){ degree[v]--; if(degree[v] == 0){ pq.push(v); } } } if(ans.size() != n){ cout << "unworkable project" << endl; }else{ for(int i = 0; i < n; i++){ cout << ans[i] << " "; } cout << endl; } return 0; }