#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
using namespace std;
using namespace __gnu_pbds;
#define ordered_set tree<int, null_type, less<int>, rb_tree_tag, tree_order_statistics_node_update>
#define int long long
#define br << '\n'
#define sp << ' '
vector<vector<int>> adj;
vector<int> vis;
stack<int> stk;
bool dfs(int n)
{
vis[n] = 1;
for (auto v : adj[n])
{
if (vis[v] == 0)
{
if (dfs(v))
return true;
}
else if (vis[v] == 1)
{
return true;
}
}
stk.push(n);
vis[n] = 2;
return false;
}
void solve()
{
int n, e;
while (cin >> n >> e && (n != 0 || e != 0))
{
adj.assign(n + 1, {});
vis.assign(n + 1, 0);
while (stk.size())
{
stk.pop();
}
for (int i = 0, f, t; i < e; i++)
{
cin >> f >> t;
adj[f].emplace_back(t);
}
bool flag = false;
for (int i = 1; i <= n; i++)
{
if (!vis[i])
{
if (dfs(i))
{
flag = true;
cout << "IMPOSSIBLE" << '\n';
break;
}
}
}
while (stk.size() and !flag)
{
cout << stk.top() << '\n';
stk.pop();
}
}
}
int32_t main()
{
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
// freopen("in.txt", "rt", stdin);
// freopen("out.txt", "wt", stdout);
int t = 1;
// cin >> t;
while (t--)
{
solve();
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNpbmNsdWRlIDxleHQvcGJfZHMvYXNzb2NfY29udGFpbmVyLmhwcD4KI2luY2x1ZGUgPGV4dC9wYl9kcy90cmVlX3BvbGljeS5ocHA+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwp1c2luZyBuYW1lc3BhY2UgX19nbnVfcGJkczsKCiNkZWZpbmUgb3JkZXJlZF9zZXQgdHJlZTxpbnQsIG51bGxfdHlwZSwgbGVzczxpbnQ+LCByYl90cmVlX3RhZywgdHJlZV9vcmRlcl9zdGF0aXN0aWNzX25vZGVfdXBkYXRlPgojZGVmaW5lIGludCBsb25nIGxvbmcKI2RlZmluZSBiciA8PCAnXG4nCiNkZWZpbmUgc3AgPDwgJyAnCgp2ZWN0b3I8dmVjdG9yPGludD4+IGFkajsKdmVjdG9yPGludD4gdmlzOwpzdGFjazxpbnQ+IHN0azsKCmJvb2wgZGZzKGludCBuKQp7CiAgICB2aXNbbl0gPSAxOwoKICAgIGZvciAoYXV0byB2IDogYWRqW25dKQogICAgewogICAgICAgIGlmICh2aXNbdl0gPT0gMCkKICAgICAgICB7CiAgICAgICAgICAgIGlmIChkZnModikpCiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9CiAgICAgICAgZWxzZSBpZiAodmlzW3ZdID09IDEpCiAgICAgICAgewogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9CiAgICB9CgogICAgc3RrLnB1c2gobik7CiAgICB2aXNbbl0gPSAyOwogICAgcmV0dXJuIGZhbHNlOwp9Cgp2b2lkIHNvbHZlKCkKewogICAgaW50IG4sIGU7CiAgICB3aGlsZSAoY2luID4+IG4gPj4gZSAmJiAobiAhPSAwIHx8IGUgIT0gMCkpCiAgICB7CiAgICAgICAgYWRqLmFzc2lnbihuICsgMSwge30pOwogICAgICAgIHZpcy5hc3NpZ24obiArIDEsIDApOwogICAgICAgIHdoaWxlIChzdGsuc2l6ZSgpKQogICAgICAgIHsKICAgICAgICAgICAgc3RrLnBvcCgpOwogICAgICAgIH0KCiAgICAgICAgZm9yIChpbnQgaSA9IDAsIGYsIHQ7IGkgPCBlOyBpKyspCiAgICAgICAgewogICAgICAgICAgICBjaW4gPj4gZiA+PiB0OwogICAgICAgICAgICBhZGpbZl0uZW1wbGFjZV9iYWNrKHQpOwogICAgICAgIH0KCiAgICAgICAgYm9vbCBmbGFnID0gZmFsc2U7CiAgICAgICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKQogICAgICAgIHsKICAgICAgICAgICAgaWYgKCF2aXNbaV0pCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGlmIChkZnMoaSkpCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgZmxhZyA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgY291dCA8PCAiSU1QT1NTSUJMRSIgPDwgJ1xuJzsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgd2hpbGUgKHN0ay5zaXplKCkgYW5kICFmbGFnKQogICAgICAgIHsKICAgICAgICAgICAgY291dCA8PCBzdGsudG9wKCkgPDwgJ1xuJzsKICAgICAgICAgICAgc3RrLnBvcCgpOwogICAgICAgIH0KICAgIH0KfQoKaW50MzJfdCBtYWluKCkKewogICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7CiAgICBjaW4udGllKG51bGxwdHIpOwogICAgY291dC50aWUobnVsbHB0cik7CgogICAgLy8gZnJlb3BlbigiaW4udHh0IiwgInJ0Iiwgc3RkaW4pOwogICAgLy8gZnJlb3Blbigib3V0LnR4dCIsICJ3dCIsIHN0ZG91dCk7CgogICAgaW50IHQgPSAxOwogICAgLy8gY2luID4+IHQ7CiAgICB3aGlsZSAodC0tKQogICAgewogICAgICAgIHNvbHZlKCk7CiAgICB9CiAgICByZXR1cm4gMDsKfQ==