#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
vector<vector<int> > graph;
enum color_t {
white = 0,
gray,
black
};
vector<color_t> color;
vector<int> topologic_sort;
void dfs (int v) {
if (color[v] != white)
return;
color[v] = gray;
for (auto next: graph[v])
dfs(next);
color[v] = black;
topologic_sort.push_back(v+1);
}
int main() {
int n,m;
while (true)
{
cin >> n >> m;
if (n==0 && m==0)
break;
graph.resize(n);
color.resize(n,white);
//topologic_sort.resize(n);
while (m--)
{
int i,j;
cin >> i >> j;
i--; j--;
graph[i].push_back(j);
}
//dfs(0);
for (int i = 0; i<n; ++i)
{
if (color[i] == white)
dfs(i);
}
//cout << topologic_sort[0] << endl;
reverse(topologic_sort.begin(), topologic_sort.end());
for (auto el : topologic_sort)
{
cout << el << " ";
}
cout << endl;
graph.clear();
color.clear();
topologic_sort.clear();
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8YWxnb3JpdGhtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKdmVjdG9yPHZlY3RvcjxpbnQ+ID4gZ3JhcGg7CgplbnVtIGNvbG9yX3QgewoJd2hpdGUgPSAwLAoJZ3JheSwKCWJsYWNrCgkKfTsKCnZlY3Rvcjxjb2xvcl90PiBjb2xvcjsKCnZlY3RvcjxpbnQ+IHRvcG9sb2dpY19zb3J0OwoKdm9pZCBkZnMgKGludCB2KSB7CglpZiAoY29sb3Jbdl0gIT0gd2hpdGUpCgkJcmV0dXJuOwoJCQoJY29sb3Jbdl0gPSBncmF5OwoJZm9yIChhdXRvIG5leHQ6IGdyYXBoW3ZdKQoJCWRmcyhuZXh0KTsKCQkKCWNvbG9yW3ZdID0gYmxhY2s7Cgl0b3BvbG9naWNfc29ydC5wdXNoX2JhY2sodisxKTsKfQoKaW50IG1haW4oKSB7CglpbnQgbixtOwoJd2hpbGUgKHRydWUpCgl7CgkJY2luID4+IG4gPj4gbTsKCQkKCQlpZiAobj09MCAmJiBtPT0wKQoJCQlicmVhazsKCQkKCQlncmFwaC5yZXNpemUobik7CgkJCgkJY29sb3IucmVzaXplKG4sd2hpdGUpOwoJCQoJCS8vdG9wb2xvZ2ljX3NvcnQucmVzaXplKG4pOwoJCQoJCXdoaWxlIChtLS0pCgkJewoJCQlpbnQgaSxqOwoJCQljaW4gPj4gaSA+PiBqOwoJCQlpLS07IGotLTsKCQkJZ3JhcGhbaV0ucHVzaF9iYWNrKGopOwoJCX0KCQkKCQkKCQkvL2RmcygwKTsKCQkKCQlmb3IgKGludCBpID0gMDsgaTxuOyArK2kpCgkJewoJCQlpZiAoY29sb3JbaV0gPT0gd2hpdGUpCgkJCQlkZnMoaSk7CgkJfQoJCQoJCS8vY291dCA8PCB0b3BvbG9naWNfc29ydFswXSA8PCBlbmRsOwoJCQoJCXJldmVyc2UodG9wb2xvZ2ljX3NvcnQuYmVnaW4oKSwgdG9wb2xvZ2ljX3NvcnQuZW5kKCkpOwoJCQoJCWZvciAoYXV0byBlbCA6IHRvcG9sb2dpY19zb3J0KQoJCXsKCQkJY291dCA8PCBlbCA8PCAiICI7CgkJfQoJCQoJCWNvdXQgPDwgZW5kbDsKCQkKCQlncmFwaC5jbGVhcigpOwoJCWNvbG9yLmNsZWFyKCk7CgkJdG9wb2xvZ2ljX3NvcnQuY2xlYXIoKTsKCQkKCQoJfQoJCgkKCXJldHVybiAwOwp9