#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using P = pair<ll,ll>;
int main() {
ll n,m;
cin>>n>>m;
vector<vector<P>>G(n+1);
for(int i = 0;i<m;i++){
ll u,v,w;
cin>>u>>v>>w;
G[u].push_back({v,w});
G[v].push_back({u,w});
}
ll src;
cin>>src;
priority_queue<P,vector<P>,greater<P>>pq;
vector<ll>dist(n+1,1e18);
pq.push({0,src});
dist[src]=0;
while(!pq.empty()){
auto u = pq.top();
ll x = u.first;
ll y = u.second;
pq.pop();
if(x > dist[y]) continue;
for(auto v : G[y]){
ll x1 = v.first;
ll y1 = v.second;
if(dist[x1] > dist[y]+y1){
dist[x1] = dist[y]+y1;
pq.push({dist[x1],x1});
}
}
}
if(dist[n] == 1e18){
cout<<-1;
}else{
cout<<dist[n];
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CnVzaW5nIGxsID0gbG9uZyBsb25nOwp1c2luZyBQID0gcGFpcjxsbCxsbD47CmludCBtYWluKCkgewoJbGwgbixtOwoJY2luPj5uPj5tOwoJdmVjdG9yPHZlY3RvcjxQPj5HKG4rMSk7Cglmb3IoaW50IGkgPSAwO2k8bTtpKyspewoJCWxsIHUsdix3OwoJCWNpbj4+dT4+dj4+dzsKCQlHW3VdLnB1c2hfYmFjayh7dix3fSk7CgkJR1t2XS5wdXNoX2JhY2soe3Usd30pOwoJfQoJCglsbCBzcmM7CgljaW4+PnNyYzsKCXByaW9yaXR5X3F1ZXVlPFAsdmVjdG9yPFA+LGdyZWF0ZXI8UD4+cHE7Cgl2ZWN0b3I8bGw+ZGlzdChuKzEsMWUxOCk7CglwcS5wdXNoKHswLHNyY30pOwoJZGlzdFtzcmNdPTA7CgkKCXdoaWxlKCFwcS5lbXB0eSgpKXsKCQlhdXRvIHUgPSBwcS50b3AoKTsKCSAgICAgbGwgeCA9IHUuZmlyc3Q7CgkgICAgIGxsIHkgPSB1LnNlY29uZDsKCSAgICAgcHEucG9wKCk7CgkgICAgaWYoeCA+IGRpc3RbeV0pIGNvbnRpbnVlOwoJICAgICBmb3IoYXV0byB2IDogR1t5XSl7CgkgICAgIAlsbCB4MSA9IHYuZmlyc3Q7CgkgICAgIAlsbCB5MSA9IHYuc2Vjb25kOwoJICAgICAJCgkgICAgIAlpZihkaXN0W3gxXSA+IGRpc3RbeV0reTEpewoJICAgICAJCWRpc3RbeDFdID0gZGlzdFt5XSt5MTsKCSAgICAgCQlwcS5wdXNoKHtkaXN0W3gxXSx4MX0pOwoJICAgICAJfQoJICAgICB9Cgl9CglpZihkaXN0W25dID09IDFlMTgpewoJCWNvdXQ8PC0xOwoJfWVsc2V7CgkJY291dDw8ZGlzdFtuXTsKCX0KCXJldHVybiAwOwp9