#include<bits/stdc++.h>
using namespace std;
const long long MaxN = 2e5 + 5, INF= 1e18+5;
long long n,m, d[MaxN], p[MaxN];
vector<pair<long long, long long>> vt[MaxN];
vector<long long> ans;
void dijikstra(long long v, long long d[])
{
priority_queue<pair<long long, long long>, vector<pair<long long, long long>>, greater<pair<long long, long long>>> pq;
pq.push({0,1});
while(!pq.empty())
{
long long u = pq.top().second;
long long du= pq.top().first;
pq.pop();
if(du!=d[u]) continue;
for (auto x : vt[u])
{
long long v = x.first;
long long weight_v = x.second;
if(d[v]>d[u]+weight_v)
{
d[v]=d[u]+weight_v;
pq.push({d[v],v});
p[v]=u;
}
}
}
}
void input()
{
cin >> n >> m;
for (long long i=1; i<=m; i++)
{
long long u,v,w;
cin >> u >> v >> w;
vt[u].push_back ({v,w});
vt[v].push_back({u,w});
}
}
void output()
{
memset(d,0x3f, sizeof(d));
d[1]=0;
dijikstra(1,d);
if(d[n]>INF)
{
cout << -1;
return;
}
long long node = n;
ans.push_back(node);
while(node!=1)
{
node = p[node];
ans.push_back(node);
}
reverse(ans.begin(),ans.end());
cout << d[n] << "\n";
for (long long x : ans)
{
cout << x << " ";
}
}
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
input();
output();
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKY29uc3QgbG9uZyBsb25nIE1heE4gPSAyZTUgKyA1LCBJTkY9IDFlMTgrNTsKbG9uZyBsb25nIG4sbSwgZFtNYXhOXSwgcFtNYXhOXTsKdmVjdG9yPHBhaXI8bG9uZyBsb25nLCBsb25nIGxvbmc+PiB2dFtNYXhOXTsKdmVjdG9yPGxvbmcgbG9uZz4gYW5zOwp2b2lkIGRpamlrc3RyYShsb25nIGxvbmcgdiwgbG9uZyBsb25nIGRbXSkKewogICAgcHJpb3JpdHlfcXVldWU8cGFpcjxsb25nIGxvbmcsIGxvbmcgbG9uZz4sIHZlY3RvcjxwYWlyPGxvbmcgbG9uZywgbG9uZyBsb25nPj4sIGdyZWF0ZXI8cGFpcjxsb25nIGxvbmcsIGxvbmcgbG9uZz4+PiBwcTsKICAgIHBxLnB1c2goezAsMX0pOwogICAgd2hpbGUoIXBxLmVtcHR5KCkpCiAgICB7CiAgICAgICAgbG9uZyBsb25nIHUgPSBwcS50b3AoKS5zZWNvbmQ7CiAgICAgICAgbG9uZyBsb25nIGR1PSBwcS50b3AoKS5maXJzdDsKICAgICAgICBwcS5wb3AoKTsKICAgICAgICBpZihkdSE9ZFt1XSkgY29udGludWU7CiAgICAgICAgZm9yIChhdXRvIHggOiB2dFt1XSkKICAgICAgICB7CiAgICAgICAgICAgIGxvbmcgbG9uZyB2ID0geC5maXJzdDsKICAgICAgICAgICAgbG9uZyBsb25nIHdlaWdodF92ID0geC5zZWNvbmQ7CiAgICAgICAgICAgIGlmKGRbdl0+ZFt1XSt3ZWlnaHRfdikKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgZFt2XT1kW3VdK3dlaWdodF92OwogICAgICAgICAgICAgICAgcHEucHVzaCh7ZFt2XSx2fSk7CiAgICAgICAgICAgICAgICBwW3ZdPXU7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9Cn0Kdm9pZCBpbnB1dCgpCnsKICAgIGNpbiA+PiBuID4+IG07CiAgICBmb3IgKGxvbmcgbG9uZyBpPTE7IGk8PW07IGkrKykKICAgIHsKICAgICAgICBsb25nIGxvbmcgdSx2LHc7CiAgICAgICAgY2luID4+IHUgPj4gdiA+PiB3OwogICAgICAgIHZ0W3VdLnB1c2hfYmFjayAoe3Ysd30pOwogICAgICAgIHZ0W3ZdLnB1c2hfYmFjayh7dSx3fSk7CiAgICB9Cn0Kdm9pZCBvdXRwdXQoKQp7CiAgICBtZW1zZXQoZCwweDNmLCBzaXplb2YoZCkpOwogICAgZFsxXT0wOwogICAgZGlqaWtzdHJhKDEsZCk7CiAgICBpZihkW25dPklORikKICAgIHsKICAgICAgICBjb3V0IDw8IC0xOwogICAgICAgIHJldHVybjsKICAgIH0KICAgIGxvbmcgbG9uZyBub2RlID0gbjsKICAgIGFucy5wdXNoX2JhY2sobm9kZSk7CiAgICB3aGlsZShub2RlIT0xKQogICAgewogICAgICAgIG5vZGUgPSBwW25vZGVdOwogICAgICAgIGFucy5wdXNoX2JhY2sobm9kZSk7CiAgICB9CiAgICByZXZlcnNlKGFucy5iZWdpbigpLGFucy5lbmQoKSk7CiAgICBjb3V0IDw8IGRbbl0gPDwgIlxuIjsKICAgIGZvciAobG9uZyBsb25nIHggOiBhbnMpCiAgICB7CiAgICAgICAgY291dCA8PCB4IDw8ICIgIjsKICAgIH0KfQppbnQgbWFpbigpCnsKICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oMCk7CiAgICBjaW4udGllKDApOwogICAgaW5wdXQoKTsKICAgIG91dHB1dCgpOwp9Cg==