#include <iostream>
#include <vector>
#include <map>
#include <queue>
#include <algorithm>
using namespace std;
int visited[100001];
map<int,map<int,int> > Map;
int prev1[100001];
int main() {
int n,m;
cin>>n>>m;
for(int i=0;i<m;i++)
{
int x,y;
cin>>x>>y;
Map[x-1][y-1]=1;
Map[y-1][x-1]=1;
}
for(int i=0;i<n;i++)
{
visited[i]=0;
prev1[i]=-1;
}
queue<int> Q;
Q.push(0);
while(!Q.empty())
{
int x = Q.front();
Q.pop();
visited[x]=1;
//cout<<x<<endl;
if(x == n-1)
{
break;
}
/*for(int i=0;i<n;i++)
{
cout<<"visited["<<i<<"]="<<visited[i]<<endl;
}
cout<<endl;*/
for(auto it=Map[x].begin();it!=Map[x].end();it++)
{
//cout<<"----visited["<<it->first<<"]="<<visited[it->first]<<endl;
if(visited[it->first] == 0)
{
visited[it->first]=1;
Q.push(it->first);
prev1[it->first] = x;
}
}
}
/*for(int i=0;i<n;i++)
{
cout<<"prev["<<i<<"]="<<prev1[i]<<endl;
}*/
if(prev1[n-1] == -1)
{
cout<<"IMPOSSIBLE"<<endl;
}
else
{
vector<int> ans;
int i=n-1;
while(i !=-1)
{
//cout<<"i="<<i<<endl;
ans.push_back(i);
i=prev1[i];
}
reverse(ans.begin(),ans.end());
cout<<ans.size()<<endl;
for(int i=0;i<ans.size();i++)
{
cout<<ans[i]+1<<" ";
}
cout<<endl;
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8bWFwPgojaW5jbHVkZSA8cXVldWU+CiNpbmNsdWRlIDxhbGdvcml0aG0+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKaW50IHZpc2l0ZWRbMTAwMDAxXTsKbWFwPGludCxtYXA8aW50LGludD4gPiBNYXA7CmludCBwcmV2MVsxMDAwMDFdOwogCmludCBtYWluKCkgewogCglpbnQgbixtOwoJY2luPj5uPj5tOwoJCglmb3IoaW50IGk9MDtpPG07aSsrKQoJewoJCWludCB4LHk7CgkJY2luPj54Pj55OwoJCU1hcFt4LTFdW3ktMV09MTsKCQlNYXBbeS0xXVt4LTFdPTE7Cgl9CgkKCWZvcihpbnQgaT0wO2k8bjtpKyspCgl7CgkJdmlzaXRlZFtpXT0wOwoJCXByZXYxW2ldPS0xOwoJfQoJCglxdWV1ZTxpbnQ+IFE7CglRLnB1c2goMCk7Cgl3aGlsZSghUS5lbXB0eSgpKQoJewoJCWludCB4ID0gUS5mcm9udCgpOwoJCVEucG9wKCk7CgkJdmlzaXRlZFt4XT0xOwoJCS8vY291dDw8eDw8ZW5kbDsKCQkKCQlpZih4ID09IG4tMSkKCQl7CgkJCWJyZWFrOwoJCX0KCQkKCQkvKmZvcihpbnQgaT0wO2k8bjtpKyspCgkJewoJCQljb3V0PDwidmlzaXRlZFsiPDxpPDwiXT0iPDx2aXNpdGVkW2ldPDxlbmRsOwoJCX0KCQljb3V0PDxlbmRsOyovCgkJCgkJZm9yKGF1dG8gaXQ9TWFwW3hdLmJlZ2luKCk7aXQhPU1hcFt4XS5lbmQoKTtpdCsrKQoJCXsKCQkJLy9jb3V0PDwiLS0tLXZpc2l0ZWRbIjw8aXQtPmZpcnN0PDwiXT0iPDx2aXNpdGVkW2l0LT5maXJzdF08PGVuZGw7CgkJCWlmKHZpc2l0ZWRbaXQtPmZpcnN0XSA9PSAwKQoJCQl7CgkJCQl2aXNpdGVkW2l0LT5maXJzdF09MTsKCQkJCVEucHVzaChpdC0+Zmlyc3QpOwoJCQkJcHJldjFbaXQtPmZpcnN0XSA9IHg7CgkJCX0KCQl9Cgl9CgkKCS8qZm9yKGludCBpPTA7aTxuO2krKykKCXsKCQljb3V0PDwicHJldlsiPDxpPDwiXT0iPDxwcmV2MVtpXTw8ZW5kbDsKCX0qLwoJCgkKCQoJaWYocHJldjFbbi0xXSA9PSAtMSkKCXsKCQljb3V0PDwiSU1QT1NTSUJMRSI8PGVuZGw7Cgl9CgllbHNlCgl7CgkJdmVjdG9yPGludD4gYW5zOwoJCWludCBpPW4tMTsKCQl3aGlsZShpICE9LTEpCgkJewoJCQkvL2NvdXQ8PCJpPSI8PGk8PGVuZGw7CgkJCWFucy5wdXNoX2JhY2soaSk7CgkJCWk9cHJldjFbaV07CgkJfQoJCQoJCXJldmVyc2UoYW5zLmJlZ2luKCksYW5zLmVuZCgpKTsKCQljb3V0PDxhbnMuc2l6ZSgpPDxlbmRsOwoJCWZvcihpbnQgaT0wO2k8YW5zLnNpemUoKTtpKyspCgkJewoJCQljb3V0PDxhbnNbaV0rMTw8IiAiOwoJCX0KCQljb3V0PDxlbmRsOwoJfQoJcmV0dXJuIDA7Cn0=