#include <bits/stdc++.h>   using namespace std;   const int maxn = 100010;   const int maxm = 100010;   struct Arc {     int to, next;   } arcs[maxm];   int head[maxn], ne, out[maxn], ans[maxn];   inline void add_arc(int u, int v);   priority_queue<int> Q;   int main() {     int n, m, i, u, v, k;     while (scanf( %d%d , &n, &m) > 0) {       memset(head, -1, sizeof(int) * (n + 1));       ne = 0;       memset(out, 0, sizeof(int) * (n + 1));       for (i = 0; i < m; i++) {         scanf( %d%d , &u, &v);         add_arc(v, u);         out[u]++;       }       while (!Q.empty()) Q.pop();       for (i = 1; i <= n; i++) {         if (out[i] == 0) Q.push(i);       }       for (k = n; k >= 1; k--) {         u = Q.top();         Q.pop();         ans[u] = k;         for (i = head[u]; i != -1; i = arcs[i].next) {           v = arcs[i].to;           if (--out[v] == 0) Q.push(v);         }       }       for (i = 1; i <= n; i++) printf( %d  , ans[i]);       printf(  n );     }     return 0;   }   inline void add_arc(int u, int v) {     arcs[ne].to = v;     arcs[ne].next = head[u];     head[u] = ne++;     return;   }   