#include <iostream>
#include <queue>
using namespace std;
int dijkstra(vector<vector<pair<int, int>>>& graph, int src, int dst){
vector<int> distance(graph.size(), 987654321);
distance[src] = 0;
priority_queue<pair<int, int>> pq;
pq.push(make_pair(0, src));
while(!pq.empty()){
int now = pq.top().second;
int dist = -pq.top().first;
pq.pop();
if(distance[now] < dist){
continue;
}
for(auto e : graph[now]){
int next = e.first;
int cost = dist + e.second;
if(distance[next] > cost){
distance[next] = cost;
pq.push(make_pair(-cost, next));
}
}
}
return distance[dst];
}
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0);
int n, c, src, dst;
cin >> n >> c >> src >> dst;
vector<vector<pair<int, int>>> graph(n + 1);
for(int i = 0; i < c; i++){
int u, v, c;
cin >> u >> v >> c;
graph[u].push_back(make_pair(v, c));
graph[v].push_back(make_pair(u, c));
}
cout << dijkstra(graph, src, dst);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8cXVldWU+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKaW50IGRpamtzdHJhKHZlY3Rvcjx2ZWN0b3I8cGFpcjxpbnQsIGludD4+PiYgZ3JhcGgsIGludCBzcmMsIGludCBkc3QpewoJCgl2ZWN0b3I8aW50PiBkaXN0YW5jZShncmFwaC5zaXplKCksIDk4NzY1NDMyMSk7CglkaXN0YW5jZVtzcmNdID0gMDsKCQoJcHJpb3JpdHlfcXVldWU8cGFpcjxpbnQsIGludD4+IHBxOwoJcHEucHVzaChtYWtlX3BhaXIoMCwgc3JjKSk7CgkKCXdoaWxlKCFwcS5lbXB0eSgpKXsKCQkKCQlpbnQgbm93ID0gcHEudG9wKCkuc2Vjb25kOwoJCWludCBkaXN0ID0gLXBxLnRvcCgpLmZpcnN0OwoJCXBxLnBvcCgpOwoJCQoJCWlmKGRpc3RhbmNlW25vd10gPCBkaXN0KXsKCQkJY29udGludWU7CgkJfQoJCQoJCWZvcihhdXRvIGUgOiBncmFwaFtub3ddKXsKCQkJaW50IG5leHQgPSBlLmZpcnN0OwoJCQlpbnQgY29zdCA9IGRpc3QgKyBlLnNlY29uZDsKCQkJaWYoZGlzdGFuY2VbbmV4dF0gPiBjb3N0KXsKCQkJCWRpc3RhbmNlW25leHRdID0gY29zdDsKCQkJCXBxLnB1c2gobWFrZV9wYWlyKC1jb3N0LCBuZXh0KSk7CgkJCX0KCQl9Cgl9CgkKCXJldHVybiBkaXN0YW5jZVtkc3RdOwoJCn0KCmludCBtYWluKCkgewoJCglpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKDApOwoJY2luLnRpZSgwKTsKCQoJaW50IG4sIGMsIHNyYywgZHN0OwoJY2luID4+IG4gPj4gYyA+PiBzcmMgPj4gZHN0OwoJCgl2ZWN0b3I8dmVjdG9yPHBhaXI8aW50LCBpbnQ+Pj4gZ3JhcGgobiArIDEpOwoJZm9yKGludCBpID0gMDsgaSA8IGM7IGkrKyl7CgkJaW50IHUsIHYsIGM7CgkJY2luID4+IHUgPj4gdiA+PiBjOwoJCWdyYXBoW3VdLnB1c2hfYmFjayhtYWtlX3BhaXIodiwgYykpOwoJCWdyYXBoW3ZdLnB1c2hfYmFjayhtYWtlX3BhaXIodSwgYykpOwoJfQoJCgljb3V0IDw8IGRpamtzdHJhKGdyYXBoLCBzcmMsIGRzdCk7CgkKCXJldHVybiAwOwp9