#include <fstream>
#include <queue>
using namespace std;
ifstream cin("sortaret.in");
ofstream cout("sortaret.out");
const int NMAX=1e5 + 5;
int n, m, x, y, grad_int[NMAX];
struct nod{
int val;
nod* urm;
}*G[NMAX];
void add(int i, int j){
nod* p;
p = new nod;
p->val = j;
p->urm = G[i];
G[i] = p;
}
int main(){
cin >> n >> m;
while(m--){
cin >> x >> y;
add(x, y);
grad_int[y]++;
}
queue<int> q;
for(int i=1;i<=n;++i){
if(!grad_int[i]){
q.push(i);
}
}
while(!q.empty()){
int info=q.front();
cout << info << " ";
q.pop();
nod* p;
for(p=G[info];p!=NULL;p=p->urm){
grad_int[p->val]--;
if(!grad_int[p->val]){
q.push(p->val);
}
}
}
return 0;
}