// author : anphung
#include<bits/stdc++.h>
using namespace std;
#define int64 long long
const int64 INF = (int64)4e18;
const int MOD1 = 1000000007;
const int MOD2 = 1000000009;
int n, m;
vector<pair<int,int>> adj[300005];
int64 d1[300005], dn[300005];
void dijkstra(int s, int64 d[]){
fill(d+1, d+n+1, INF);
priority_queue<pair<int64,int>, vector<pair<int64,int>>, greater<>> pq;
d[s] = 0;
pq.push({0, s});
while(!pq.empty()){
long long du = pq.top().first;
int u = pq.top().second;
pq.pop();
if(du != d[u]) continue;
for(auto &p: adj[u]){
int v = p.first;
long long w = p.second;
if(d[v] > du + w){
d[v] = du + w;
pq.push({d[v], v});
}
}
}
}
int main(){
ios::sync_with_stdio(0);
cin.tie(0);
cin >> n >> m;
for(int i=0;i<m;i++){
int u,v,w;
cin >> u >> v >> w;
adj[u].push_back({v,w});
adj[v].push_back({u,w});
}
dijkstra(1, d1);
dijkstra(n, dn);
int64 D = d1[n];
vector<vector<int>> dag(n+1);
vector<int> indeg(n+1, 0);
for(int u=1;u<=n;u++){
for(auto &p: adj[u]){
int v = p.first; long long w = p.second;
if(d1[u] + w + dn[v] == D){
dag[u].push_back(v);
indeg[v]++;
}
}
}
vector<int> topo;
queue<int> q;
for(int i=1;i<=n;i++){
if(indeg[i]==0) q.push(i);
}
while(!q.empty()){
int u = q.front(); q.pop();
topo.push_back(u);
for(int v: dag[u]){
if(--indeg[v]==0) q.push(v);
}
}
vector<int> c1(n+1,0), c2(n+1,0);
c1[1] = c2[1] = 1;
for(int u: topo){
for(int v: dag[u]){
c1[v] = (c1[v] + c1[u]) % MOD1;
c2[v] = (c2[v] + c2[u]) % MOD2;
}
}
vector<int> d1n(n+1,0), d2n(n+1,0);
d1n[n] = d2n[n] = 1;
reverse(topo.begin(), topo.end());
for(int u: topo){
for(int v: dag[u]){
d1n[u] = (d1n[u] + d1n[v]) % MOD1;
d2n[u] = (d2n[u] + d2n[v]) % MOD2;
}
}
int total1 = c1[n], total2 = c2[n];
vector<int> ans;
for(int i=2;i<n;i++){
if( (int64)c1[i]*d1n[i]%MOD1 == total1 &&
(int64)c2[i]*d2n[i]%MOD2 == total2 ){
continue;
}
ans.emplace_back(i);
}
cout << ans.size() << '\n';
for(int x: ans) cout << x << '\n';
}
Ly8gYXV0aG9yIDogYW5waHVuZwojaW5jbHVkZTxiaXRzL3N0ZGMrKy5oPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKI2RlZmluZSBpbnQ2NCBsb25nIGxvbmcKY29uc3QgaW50NjQgSU5GID0gKGludDY0KTRlMTg7CmNvbnN0IGludCBNT0QxID0gMTAwMDAwMDAwNzsKY29uc3QgaW50IE1PRDIgPSAxMDAwMDAwMDA5OwoKaW50IG4sIG07CnZlY3RvcjxwYWlyPGludCxpbnQ+PiBhZGpbMzAwMDA1XTsKaW50NjQgZDFbMzAwMDA1XSwgZG5bMzAwMDA1XTsKCnZvaWQgZGlqa3N0cmEoaW50IHMsIGludDY0IGRbXSl7CiAgICBmaWxsKGQrMSwgZCtuKzEsIElORik7CiAgICBwcmlvcml0eV9xdWV1ZTxwYWlyPGludDY0LGludD4sIHZlY3RvcjxwYWlyPGludDY0LGludD4+LCBncmVhdGVyPD4+IHBxOwogICAgZFtzXSA9IDA7CiAgICBwcS5wdXNoKHswLCBzfSk7CiAgICB3aGlsZSghcHEuZW1wdHkoKSl7CiAgICAgICAgbG9uZyBsb25nIGR1ID0gcHEudG9wKCkuZmlyc3Q7CiAgICAgICAgaW50IHUgPSBwcS50b3AoKS5zZWNvbmQ7CiAgICAgICAgcHEucG9wKCk7CiAgICAgICAgaWYoZHUgIT0gZFt1XSkgY29udGludWU7CiAgICAgICAgZm9yKGF1dG8gJnA6IGFkalt1XSl7CiAgICAgICAgICAgIGludCB2ID0gcC5maXJzdDsKICAgICAgICAgICAgbG9uZyBsb25nIHcgPSBwLnNlY29uZDsKICAgICAgICAgICAgaWYoZFt2XSA+IGR1ICsgdyl7CiAgICAgICAgICAgICAgICBkW3ZdID0gZHUgKyB3OwogICAgICAgICAgICAgICAgcHEucHVzaCh7ZFt2XSwgdn0pOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQp9CgppbnQgbWFpbigpewogICAgaW9zOjpzeW5jX3dpdGhfc3RkaW8oMCk7CiAgICBjaW4udGllKDApOwoKICAgIGNpbiA+PiBuID4+IG07CiAgICBmb3IoaW50IGk9MDtpPG07aSsrKXsKICAgICAgICBpbnQgdSx2LHc7CiAgICAgICAgY2luID4+IHUgPj4gdiA+PiB3OwogICAgICAgIGFkalt1XS5wdXNoX2JhY2soe3Ysd30pOwogICAgICAgIGFkalt2XS5wdXNoX2JhY2soe3Usd30pOwogICAgfQoKICAgIGRpamtzdHJhKDEsIGQxKTsKICAgIGRpamtzdHJhKG4sIGRuKTsKCiAgICBpbnQ2NCBEID0gZDFbbl07CgogICAgdmVjdG9yPHZlY3RvcjxpbnQ+PiBkYWcobisxKTsKICAgIHZlY3RvcjxpbnQ+IGluZGVnKG4rMSwgMCk7CgogICAgZm9yKGludCB1PTE7dTw9bjt1KyspewogICAgICAgIGZvcihhdXRvICZwOiBhZGpbdV0pewogICAgICAgICAgICBpbnQgdiA9IHAuZmlyc3Q7IGxvbmcgbG9uZyB3ID0gcC5zZWNvbmQ7CiAgICAgICAgICAgIGlmKGQxW3VdICsgdyArIGRuW3ZdID09IEQpewogICAgICAgICAgICAgICAgZGFnW3VdLnB1c2hfYmFjayh2KTsKICAgICAgICAgICAgICAgIGluZGVnW3ZdKys7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgdmVjdG9yPGludD4gdG9wbzsKICAgIHF1ZXVlPGludD4gcTsKICAgIGZvcihpbnQgaT0xO2k8PW47aSsrKXsKICAgICAgICBpZihpbmRlZ1tpXT09MCkgcS5wdXNoKGkpOwogICAgfQogICAgd2hpbGUoIXEuZW1wdHkoKSl7CiAgICAgICAgaW50IHUgPSBxLmZyb250KCk7IHEucG9wKCk7CiAgICAgICAgdG9wby5wdXNoX2JhY2sodSk7CiAgICAgICAgZm9yKGludCB2OiBkYWdbdV0pewogICAgICAgICAgICBpZigtLWluZGVnW3ZdPT0wKSBxLnB1c2godik7CiAgICAgICAgfQogICAgfQoKICAgIHZlY3RvcjxpbnQ+IGMxKG4rMSwwKSwgYzIobisxLDApOwogICAgYzFbMV0gPSBjMlsxXSA9IDE7CgogICAgZm9yKGludCB1OiB0b3BvKXsKICAgICAgICBmb3IoaW50IHY6IGRhZ1t1XSl7CiAgICAgICAgICAgIGMxW3ZdID0gKGMxW3ZdICsgYzFbdV0pICUgTU9EMTsKICAgICAgICAgICAgYzJbdl0gPSAoYzJbdl0gKyBjMlt1XSkgJSBNT0QyOwogICAgICAgIH0KICAgIH0KCiAgICB2ZWN0b3I8aW50PiBkMW4obisxLDApLCBkMm4obisxLDApOwogICAgZDFuW25dID0gZDJuW25dID0gMTsKCiAgICByZXZlcnNlKHRvcG8uYmVnaW4oKSwgdG9wby5lbmQoKSk7CiAgICBmb3IoaW50IHU6IHRvcG8pewogICAgICAgIGZvcihpbnQgdjogZGFnW3VdKXsKICAgICAgICAgICAgZDFuW3VdID0gKGQxblt1XSArIGQxblt2XSkgJSBNT0QxOwogICAgICAgICAgICBkMm5bdV0gPSAoZDJuW3VdICsgZDJuW3ZdKSAlIE1PRDI7CiAgICAgICAgfQogICAgfQoKICAgIGludCB0b3RhbDEgPSBjMVtuXSwgdG90YWwyID0gYzJbbl07CgogICAgdmVjdG9yPGludD4gYW5zOwogICAgZm9yKGludCBpPTI7aTxuO2krKyl7CiAgICAgICAgaWYoIChpbnQ2NCljMVtpXSpkMW5baV0lTU9EMSA9PSB0b3RhbDEgJiYKICAgICAgICAgICAgKGludDY0KWMyW2ldKmQybltpXSVNT0QyID09IHRvdGFsMiApewogICAgICAgICAgICBjb250aW51ZTsgCiAgICAgICAgfQogICAgICAgIGFucy5lbXBsYWNlX2JhY2soaSk7CiAgICB9CgogICAgY291dCA8PCBhbnMuc2l6ZSgpIDw8ICdcbic7CiAgICBmb3IoaW50IHg6IGFucykgY291dCA8PCB4IDw8ICdcbic7Cn0K