#include<bits/stdc++.h>
using namespace std;
# define _z ios_base::sync_with_stdio(false); cin.tie(NULL);
# define ll long long int
#define mod 1000000007
int n;
set<pair<int, int>> dist;
void dij(vector<pair<int, int>> tree[], int decided[], int d[], vector<int>path[]) {
int mindist=INT_MAX, ind=0;
auto it=dist.begin();
if (it == dist.end())
{
cerr << "Oh snap!";
exit(-1);
}
ind=it->second;
cout<<"inbetween"<<endl;
it=dist.erase(it);
cout<<"inbetween"<<endl;
decided[ind]=1;
for(int i=0; i<tree[ind].size(); i++) {
int update=d[ind]+tree[ind][i].second;
int previous=d[tree[ind][i].first];
if(update<previous) {
pair<int, int>p=make_pair(previous, tree[ind][i].first);
dist.erase(dist.find(p));
p=make_pair(update, tree[ind][i].first);
dist.insert(p);
path[tree[ind][i].first]=path[ind];
cout<<*path[tree[ind][i].first].begin()<<endl;
path[tree[ind][i].first].push_back(tree[ind][i].first);
}
d[tree[ind][i].first]=min(update, previous);
}
}
int main()
{
int edges;
cin>>n>>edges;
vector<pair<int, int>> graph[n];
set<pair<int, int>> dist;
for(int i=0; i<edges; i++) {
int x, y, weight;
cin>>x>>y>>weight;
x--; y--;
graph[x].push_back({y, weight});
graph[y].push_back({x, weight});
}
int src=1;
//cin>>src;
cout<<"here"<<endl;
src--;
int d[n];
for(int i=0; i<n; i++) {
if(src==i) {
dist.insert({0, i});
d[i]=0;
}
else {
dist.insert({INT_MAX, i});
d[i]=INT_MAX;
}
}
int decided[n]={0};
vector<int> path[n];
path[src].push_back(src);
for(int i=0; i<n; i++) dij(graph, decided, d, path);
if(path[n-1].begin()==path[n-1].end()) cout<<-1<<endl;
for(auto it=path[n-1].begin(); it!=path[n-1].end(); it++) cout<<*it+1<<" ";
cout<<endl;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCiMgZGVmaW5lIF96IGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOyBjaW4udGllKE5VTEwpOwojIGRlZmluZSBsbCBsb25nIGxvbmcgaW50CiNkZWZpbmUgbW9kIDEwMDAwMDAwMDcKCmludCBuOwpzZXQ8cGFpcjxpbnQsIGludD4+IGRpc3Q7Cgp2b2lkIGRpaih2ZWN0b3I8cGFpcjxpbnQsIGludD4+IHRyZWVbXSwgaW50IGRlY2lkZWRbXSwgaW50IGRbXSwgdmVjdG9yPGludD5wYXRoW10pIHsKICAgIGludCBtaW5kaXN0PUlOVF9NQVgsIGluZD0wOwogICAgYXV0byBpdD1kaXN0LmJlZ2luKCk7CiAgICBpZiAoaXQgPT0gZGlzdC5lbmQoKSkKICAgIHsKICAgIAljZXJyIDw8ICJPaCBzbmFwISI7CiAgICAJZXhpdCgtMSk7CiAgICB9CiAgICBpbmQ9aXQtPnNlY29uZDsKICAgIGNvdXQ8PCJpbmJldHdlZW4iPDxlbmRsOwogICAgaXQ9ZGlzdC5lcmFzZShpdCk7CiAgICBjb3V0PDwiaW5iZXR3ZWVuIjw8ZW5kbDsKICAgIGRlY2lkZWRbaW5kXT0xOwogICAgZm9yKGludCBpPTA7IGk8dHJlZVtpbmRdLnNpemUoKTsgaSsrKSB7CiAgICAgICAgaW50IHVwZGF0ZT1kW2luZF0rdHJlZVtpbmRdW2ldLnNlY29uZDsKICAgICAgICBpbnQgcHJldmlvdXM9ZFt0cmVlW2luZF1baV0uZmlyc3RdOwogICAgICAgIGlmKHVwZGF0ZTxwcmV2aW91cykgewogICAgICAgICAgICBwYWlyPGludCwgaW50PnA9bWFrZV9wYWlyKHByZXZpb3VzLCB0cmVlW2luZF1baV0uZmlyc3QpOwogICAgICAgICAgICBkaXN0LmVyYXNlKGRpc3QuZmluZChwKSk7CiAgICAgICAgICAgIHA9bWFrZV9wYWlyKHVwZGF0ZSwgdHJlZVtpbmRdW2ldLmZpcnN0KTsKICAgICAgICAgICAgZGlzdC5pbnNlcnQocCk7CiAgICAgICAgICAgIHBhdGhbdHJlZVtpbmRdW2ldLmZpcnN0XT1wYXRoW2luZF07CiAgICAgICAgICAgIGNvdXQ8PCpwYXRoW3RyZWVbaW5kXVtpXS5maXJzdF0uYmVnaW4oKTw8ZW5kbDsKICAgICAgICAgICAgcGF0aFt0cmVlW2luZF1baV0uZmlyc3RdLnB1c2hfYmFjayh0cmVlW2luZF1baV0uZmlyc3QpOwogICAgICAgIH0KICAgICAgICBkW3RyZWVbaW5kXVtpXS5maXJzdF09bWluKHVwZGF0ZSwgcHJldmlvdXMpOwogICAgfQp9CgppbnQgbWFpbigpCnsKICAgIGludCBlZGdlczsKICAgIGNpbj4+bj4+ZWRnZXM7CiAgICB2ZWN0b3I8cGFpcjxpbnQsIGludD4+IGdyYXBoW25dOwogICAgc2V0PHBhaXI8aW50LCBpbnQ+PiBkaXN0OwogICAgZm9yKGludCBpPTA7IGk8ZWRnZXM7IGkrKykgewogICAgICAgIGludCB4LCB5LCB3ZWlnaHQ7CiAgICAgICAgY2luPj54Pj55Pj53ZWlnaHQ7CiAgICAgICAgeC0tOyB5LS07CiAgICAgICAgZ3JhcGhbeF0ucHVzaF9iYWNrKHt5LCB3ZWlnaHR9KTsKICAgICAgICBncmFwaFt5XS5wdXNoX2JhY2soe3gsIHdlaWdodH0pOwogICAgfQogICAgaW50IHNyYz0xOwogICAgLy9jaW4+PnNyYzsKICAgIGNvdXQ8PCJoZXJlIjw8ZW5kbDsKICAgIHNyYy0tOwogICAgaW50IGRbbl07CiAgICBmb3IoaW50IGk9MDsgaTxuOyBpKyspIHsKICAgICAgICBpZihzcmM9PWkpIHsKICAgICAgICAgICAgZGlzdC5pbnNlcnQoezAsIGl9KTsKICAgICAgICAgICAgZFtpXT0wOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgZGlzdC5pbnNlcnQoe0lOVF9NQVgsIGl9KTsKICAgICAgICAgICAgZFtpXT1JTlRfTUFYOwogICAgICAgIH0KICAgIH0KICAgIGludCBkZWNpZGVkW25dPXswfTsKICAgIHZlY3RvcjxpbnQ+IHBhdGhbbl07CiAgICBwYXRoW3NyY10ucHVzaF9iYWNrKHNyYyk7CiAgICBmb3IoaW50IGk9MDsgaTxuOyBpKyspIGRpaihncmFwaCwgZGVjaWRlZCwgZCwgcGF0aCk7CiAgICBpZihwYXRoW24tMV0uYmVnaW4oKT09cGF0aFtuLTFdLmVuZCgpKSBjb3V0PDwtMTw8ZW5kbDsKICAgIGZvcihhdXRvIGl0PXBhdGhbbi0xXS5iZWdpbigpOyBpdCE9cGF0aFtuLTFdLmVuZCgpOyBpdCsrKSBjb3V0PDwqaXQrMTw8IiAiOwogICAgY291dDw8ZW5kbDsKfQo=