#include <bits/stdc++.h>
using namespace std;
void fastio() {
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
}
int n, m;
vector<vector<int>> adjList;
vector<bool> vis;
vector<int> topo;
void dfs(int node) {
vis[node] = true;
for (auto& v : adjList[node])
if (!vis[v])
dfs(v);
topo.push_back(node);
}
void solve() {
while (cin >> n >> m) {
if (n == 0 && m == 0)
return;
adjList.assign(n + 1, vector<int>());
vis.assign(n + 1, false);
topo.clear();
for (int i = 0; i < m; ++i) {
int u, v;
cin >> u >> v;
adjList[u].push_back(v);
}
for (int i = 1; i <= n; ++i)
if (!vis[i])
dfs(i);
reverse(topo.begin(), topo.end());
for (auto& t : topo)
cout << t << ' ';
cout << '\n';
}
}
int main() {
fastio();
solve();
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgp2b2lkIGZhc3RpbygpIHsKICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOwogICAgY2luLnRpZShudWxscHRyKTsKICAgIGNvdXQudGllKG51bGxwdHIpOwp9CgppbnQgbiwgbTsKdmVjdG9yPHZlY3RvcjxpbnQ+PiBhZGpMaXN0Owp2ZWN0b3I8Ym9vbD4gdmlzOwp2ZWN0b3I8aW50PiB0b3BvOwoKdm9pZCBkZnMoaW50IG5vZGUpIHsKICAgIHZpc1tub2RlXSA9IHRydWU7CiAgICBmb3IgKGF1dG8mIHYgOiBhZGpMaXN0W25vZGVdKQogICAgICAgIGlmICghdmlzW3ZdKQogICAgICAgICAgICBkZnModik7CiAgICB0b3BvLnB1c2hfYmFjayhub2RlKTsKfQoKdm9pZCBzb2x2ZSgpIHsKICAgIHdoaWxlIChjaW4gPj4gbiA+PiBtKSB7CiAgICAgICAgaWYgKG4gPT0gMCAmJiBtID09IDApCiAgICAgICAgICAgIHJldHVybjsKCiAgICAgICAgYWRqTGlzdC5hc3NpZ24obiArIDEsIHZlY3RvcjxpbnQ+KCkpOwogICAgICAgIHZpcy5hc3NpZ24obiArIDEsIGZhbHNlKTsKICAgICAgICB0b3BvLmNsZWFyKCk7CiAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtOyArK2kpIHsKICAgICAgICAgICAgaW50IHUsIHY7CiAgICAgICAgICAgIGNpbiA+PiB1ID4+IHY7CiAgICAgICAgICAgIGFkakxpc3RbdV0ucHVzaF9iYWNrKHYpOwogICAgICAgIH0KCiAgICAgICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgKytpKQogICAgICAgICAgICBpZiAoIXZpc1tpXSkKICAgICAgICAgICAgICAgIGRmcyhpKTsKCiAgICAgICAgcmV2ZXJzZSh0b3BvLmJlZ2luKCksIHRvcG8uZW5kKCkpOwogICAgICAgIGZvciAoYXV0byYgdCA6IHRvcG8pCiAgICAgICAgICAgIGNvdXQgPDwgdCA8PCAnICc7CiAgICAgICAgY291dCA8PCAnXG4nOwogICAgfQp9CgppbnQgbWFpbigpIHsKICAgIGZhc3RpbygpOwogICAgc29sdmUoKTsKICAgIHJldHVybiAwOwp9Cg==