#include <bits/stdc++.h>
#define endl "\n"
using namespace std;
#define int long long int
#define watch(x) cout << (#x) << " is " << (x) << "\n"
#define watch2(x, y) cout << #x << "=" << x << "," << #y << "=" << y << "\n"
int n, m;
vector<set<pair<int,int>>> g;
vector<int> dist;
vector<int> par;
void dij()
{
priority_queue<pair<int,int>, vector<pair<int,int>>, greater<pair<int,int>>> pq;
pq.push({0,1});
dist[1] = 0;
par[1] = -1;
while(!pq.empty())
{
int u = pq.top().second;
int d = pq.top().first;
pq.pop();
if(dist[u] < d) continue;
for(auto e: g[u])
{
int v = e.first;
int c = e.second;
if(dist[v] > dist[u]+c)
{
dist[v] = dist[u]+c;
pq.push({dist[v],v});
par[v] = u;
}
}
}
}
int32_t main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cin >> n >> m;
dist.resize(n+1);
par.resize(n+1);
for(int i = 1; i <= n; ++i)
{
par[i] = -1;
}
g.resize(n+1);
for(int i = 0; i < m; ++i)
{
int u, v;
cin >> u >> v;
g[u].insert({v,-1});
}
dij();
if(dist[n] == 0)
{
cout << "IMPOSSIBLE";
return 0;
}
cout << 1 + dist[n]*(-1) << endl;
vector<int> ans;
int temp = n;
while(temp != -1)
{
ans.push_back(temp);
temp = par[temp];
}
reverse(ans.begin(), ans.end());
for(auto u: ans)
{
cout << u << " ";
}
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNkZWZpbmUgZW5kbCAiXG4iCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgaW50IGxvbmcgbG9uZyBpbnQKI2RlZmluZSB3YXRjaCh4KSBjb3V0IDw8ICgjeCkgPDwgIiBpcyAiIDw8ICh4KSA8PCAiXG4iCiNkZWZpbmUgd2F0Y2gyKHgsIHkpIGNvdXQgPDwgI3ggPDwgIj0iIDw8IHggPDwgIiwiIDw8ICN5IDw8ICI9IiA8PCB5IDw8ICJcbiIKIAppbnQgbiwgbTsKdmVjdG9yPHNldDxwYWlyPGludCxpbnQ+Pj4gZzsKdmVjdG9yPGludD4gZGlzdDsKdmVjdG9yPGludD4gcGFyOwogCnZvaWQgZGlqKCkKewoJcHJpb3JpdHlfcXVldWU8cGFpcjxpbnQsaW50PiwgdmVjdG9yPHBhaXI8aW50LGludD4+LCBncmVhdGVyPHBhaXI8aW50LGludD4+PiBwcTsKCXBxLnB1c2goezAsMX0pOwoJZGlzdFsxXSA9IDA7CglwYXJbMV0gPSAtMTsKIAoJd2hpbGUoIXBxLmVtcHR5KCkpCgl7CgkJaW50IHUgPSBwcS50b3AoKS5zZWNvbmQ7CgkJaW50IGQgPSBwcS50b3AoKS5maXJzdDsKCQlwcS5wb3AoKTsKCQkKCQlpZihkaXN0W3VdIDwgZCkgY29udGludWU7CgkJCgkJZm9yKGF1dG8gZTogZ1t1XSkKCQl7CgkJCWludCB2ID0gZS5maXJzdDsKCQkJaW50IGMgPSBlLnNlY29uZDsKCQkJaWYoZGlzdFt2XSA+IGRpc3RbdV0rYykKCQkJewoJCQkJZGlzdFt2XSA9IGRpc3RbdV0rYzsKCQkJCXBxLnB1c2goe2Rpc3Rbdl0sdn0pOwoJCQkJcGFyW3ZdID0gdTsKCQkJfQoJCX0KIAogCgl9CiAKfQogCmludDMyX3QgbWFpbigpCnsKCWlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOwoJY2luLnRpZShOVUxMKTsKCWNpbiA+PiBuID4+IG07CglkaXN0LnJlc2l6ZShuKzEpOwoJcGFyLnJlc2l6ZShuKzEpOwoJCglmb3IoaW50IGkgPSAxOyBpIDw9IG47ICsraSkKCXsKCQlwYXJbaV0gPSAtMTsKCX0KIAoJZy5yZXNpemUobisxKTsKCWZvcihpbnQgaSA9IDA7IGkgPCBtOyArK2kpCgl7CgkJaW50IHUsIHY7CgkJY2luID4+IHUgPj4gdjsKCQlnW3VdLmluc2VydCh7diwtMX0pOwoJfQoJZGlqKCk7CglpZihkaXN0W25dID09IDApCgl7CgkJY291dCA8PCAiSU1QT1NTSUJMRSI7CgkJcmV0dXJuIDA7Cgl9CgkKCWNvdXQgPDwgMSArIGRpc3Rbbl0qKC0xKSA8PCBlbmRsOwoJdmVjdG9yPGludD4gYW5zOwoJaW50IHRlbXAgPSBuOwoJd2hpbGUodGVtcCAhPSAtMSkKCXsKCQlhbnMucHVzaF9iYWNrKHRlbXApOwoJCXRlbXAgPSBwYXJbdGVtcF07Cgl9CglyZXZlcnNlKGFucy5iZWdpbigpLCBhbnMuZW5kKCkpOwoJZm9yKGF1dG8gdTogYW5zKQoJewoJCWNvdXQgPDwgdSA8PCAiICI7Cgl9CiAKfQ==