#include <bits/stdc++.h>
using namespace std;
#define int long long
int n, m;
vector<vector<pair<int, int>>> g;
vector<int> dist, par, indegree;
int32_t main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cin >> n >> m;
g.resize(n + 1);
dist.assign(n + 1, LLONG_MIN);
par.assign(n + 1, -1);
indegree.assign(n + 1, 0);
for (int i = 0; i < m; ++i) {
int u, v;
cin >> u >> v;
g[u].push_back({v, 1});
indegree[v]++;
}
queue<int> q;
for (int i = 1; i <= n; ++i) {
if (indegree[i] == 0) q.push(i);
}
dist[1] = 0;
while (!q.empty()) {
int u = q.front();
q.pop();
for (auto [v, w] : g[u]) {
if (dist[u] != LLONG_MIN && dist[v] < dist[u] + w) {
dist[v] = dist[u] + w;
par[v] = u;
}
indegree[v]--;
if (indegree[v] == 0) q.push(v);
}
}
if (dist[n] == LLONG_MIN) {
cout << "IMPOSSIBLE\n";
return 0;
}
cout << dist[n] + 1 << "\n";
vector<int> path;
for (int v = n; v != -1; v = par[v]) {
path.push_back(v);
}
reverse(path.begin(), path.end());
for (int x : path) cout << x << " ";
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgaW50IGxvbmcgbG9uZwoKaW50IG4sIG07CnZlY3Rvcjx2ZWN0b3I8cGFpcjxpbnQsIGludD4+PiBnOwp2ZWN0b3I8aW50PiBkaXN0LCBwYXIsIGluZGVncmVlOwoKaW50MzJfdCBtYWluKCkgewogICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7CiAgICBjaW4udGllKE5VTEwpOwoKICAgIGNpbiA+PiBuID4+IG07CiAgICBnLnJlc2l6ZShuICsgMSk7CiAgICBkaXN0LmFzc2lnbihuICsgMSwgTExPTkdfTUlOKTsKICAgIHBhci5hc3NpZ24obiArIDEsIC0xKTsKICAgIGluZGVncmVlLmFzc2lnbihuICsgMSwgMCk7CgogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtOyArK2kpIHsKICAgICAgICBpbnQgdSwgdjsKICAgICAgICBjaW4gPj4gdSA+PiB2OwogICAgICAgIGdbdV0ucHVzaF9iYWNrKHt2LCAxfSk7CiAgICAgICAgaW5kZWdyZWVbdl0rKzsKICAgIH0KCiAgICBxdWV1ZTxpbnQ+IHE7CgogICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgKytpKSB7CiAgICAgICAgaWYgKGluZGVncmVlW2ldID09IDApIHEucHVzaChpKTsKICAgIH0KCiAgICBkaXN0WzFdID0gMDsKICAgIHdoaWxlICghcS5lbXB0eSgpKSB7CiAgICAgICAgaW50IHUgPSBxLmZyb250KCk7CiAgICAgICAgcS5wb3AoKTsKCiAgICAgICAgZm9yIChhdXRvIFt2LCB3XSA6IGdbdV0pIHsKICAgICAgICAgICAgaWYgKGRpc3RbdV0gIT0gTExPTkdfTUlOICYmIGRpc3Rbdl0gPCBkaXN0W3VdICsgdykgewogICAgICAgICAgICAgICAgZGlzdFt2XSA9IGRpc3RbdV0gKyB3OwogICAgICAgICAgICAgICAgcGFyW3ZdID0gdTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpbmRlZ3JlZVt2XS0tOwogICAgICAgICAgICBpZiAoaW5kZWdyZWVbdl0gPT0gMCkgcS5wdXNoKHYpOwogICAgICAgIH0KICAgIH0KCiAgICBpZiAoZGlzdFtuXSA9PSBMTE9OR19NSU4pIHsKICAgICAgICBjb3V0IDw8ICJJTVBPU1NJQkxFXG4iOwogICAgICAgIHJldHVybiAwOwogICAgfQoKICAgIGNvdXQgPDwgZGlzdFtuXSArIDEgPDwgIlxuIjsKICAgIHZlY3RvcjxpbnQ+IHBhdGg7CiAgICBmb3IgKGludCB2ID0gbjsgdiAhPSAtMTsgdiA9IHBhclt2XSkgewogICAgICAgIHBhdGgucHVzaF9iYWNrKHYpOwogICAgfQogICAgcmV2ZXJzZShwYXRoLmJlZ2luKCksIHBhdGguZW5kKCkpOwogICAgZm9yIChpbnQgeCA6IHBhdGgpIGNvdXQgPDwgeCA8PCAiICI7Cn0K