#include<bits/stdc++.h>usingnamespace std;constint maxn =1010;
vector<int> G[maxn];int inD[maxn];boolTopologicalSort(int n){
priority_queue<int, vector<int>, greater<int>> pq;for(int i =1; i <= n;++i){if(inD[i]==0){
pq.push(i);}}int num =0;while(!pq.empty()){int now = pq.top();
pq.pop();
num++;printf("%d", now);for(int i =0; i < G[now].size();++i){int nex = G[now][i];
inD[nex]--;if(inD[nex]==0){
pq.push(nex);}}if(!pq.empty())printf(" ");}printf("\n");if(num != n)returnfalse;elsereturntrue;}intmain(){int n, m;while(scanf("%d %d",&n,&m)!=EOF&& n !=0){for(int i =0; i < m;++i){int p1, p2;scanf("%d %d",&p1,&p2);
G[p1].push_back(p2);
inD[p2]++;}TopologicalSort(n);for(int i =1; i <= n;++i) G[i].clear();}return0;}