#include <map>
#include <cmath>
#include <queue>
#include <string>
#include <chrono>
#include <vector>
#include <fstream>
#include <iostream>
#include <algorithm>
using namespace std;
#define endl "\n"
#define int long long
#define ll long long
#define MASK(i) (1LL << (i))
#define BIT(x, i) (((x) >> (i)) & 1)
int n, m;
ll ans = 0;
int a, b, c;
const int Lim = 5e5+55;
int vl[Lim];
bool vs[Lim];
bool live[Lim];
int pr[Lim];
int N = 0;
struct edge{
int u, v, w;
};
int find(int u) {
if (pr[u] == u) return u;
return pr[u] = find(pr[u]);
}
bool join(int u, int v) {
int rootU = find(u);
int rootV = find(v);
if (rootU == rootV) return false;
pr[rootU] = rootV;
return true;
}
vector<pair<int,int>> adj[Lim];
vector<edge> adj2;
void input() {
cin >> n >> m;
cin >> a >> b >> c;
for ( int i = 1; i <= m; i++ ) {
int u, v, w;
cin >> u >> v >> w;
adj[u].push_back({v,w});
adj[v].push_back({u,w});
}
}
void dfs(int u) {
live[u] = true;
for (auto [v, w] : adj[u]) {
if (!live[v]) {
dfs(v);
if (vs[v]) vs[u] = true;
}
}
}
void solve() {
vs[a] = true;
vs[b] = true;
vs[c] = true;
dfs(a);
for ( int i = 1; i <= n; i++ ) if ( vs[i] == true ) pr[i] = i;
for ( int i = 1; i <= n; i++ ) {
if ( vs[i] == true ) {
for ( pair<int,int> j : adj[i] ) {
int k = j.first;
int w = j.second;
if (vs[i] && vs[k] && i < k) {
adj2.push_back({i, k, w});
}
}
}
}
sort(adj2.begin(), adj2.end(), [](edge a, edge b) {
return a.w < b.w;
});
for (int i = 0; i < (int)adj2.size(); i++) {
int u = adj2[i].u;
int v = adj2[i].v;
int w = adj2[i].w;
if (join(u, v)) ans += w;
}
}
void output() {
cout << ans;
}
int32_t main() {
ios_base::sync_with_stdio(0);
cin.tie(nullptr);
if ( fopen("test_case.inp","r") ) {
freopen("test_case.inp","r",stdin);
freopen("test_case.out","w",stdout);
}
input();
solve();
output();
return 0;
}
I2luY2x1ZGUgPG1hcD4KCiNpbmNsdWRlIDxjbWF0aD4gCgojaW5jbHVkZSA8cXVldWU+CgojaW5jbHVkZSA8c3RyaW5nPgoKI2luY2x1ZGUgPGNocm9ubz4KCiNpbmNsdWRlIDx2ZWN0b3I+CgojaW5jbHVkZSA8ZnN0cmVhbT4KCiNpbmNsdWRlIDxpb3N0cmVhbT4KCiNpbmNsdWRlIDxhbGdvcml0aG0+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKI2RlZmluZSBlbmRsICJcbiIKCiNkZWZpbmUgaW50IGxvbmcgbG9uZwoKI2RlZmluZSBsbCBsb25nIGxvbmcKCiNkZWZpbmUgTUFTSyhpKSAoMUxMIDw8IChpKSkKCiNkZWZpbmUgQklUKHgsIGkpICgoKHgpID4+IChpKSkgJiAxKQoKaW50IG4sIG07CgpsbCBhbnMgPSAwOwoKaW50IGEsIGIsIGM7Cgpjb25zdCBpbnQgTGltID0gNWU1KzU1OwoKaW50IHZsW0xpbV07Cgpib29sIHZzW0xpbV07Cgpib29sIGxpdmVbTGltXTsKCmludCBwcltMaW1dOwoKaW50IE4gPSAwOwoKc3RydWN0IGVkZ2V7CgogICAgaW50IHUsIHYsIHc7Cgp9OwoKaW50IGZpbmQoaW50IHUpIHsKCiAgICBpZiAocHJbdV0gPT0gdSkgcmV0dXJuIHU7CgogICAgcmV0dXJuIHByW3VdID0gZmluZChwclt1XSk7Cgp9Cgpib29sIGpvaW4oaW50IHUsIGludCB2KSB7CgogICAgaW50IHJvb3RVID0gZmluZCh1KTsKCiAgICBpbnQgcm9vdFYgPSBmaW5kKHYpOwoKICAgIGlmIChyb290VSA9PSByb290VikgcmV0dXJuIGZhbHNlOwoKICAgIHByW3Jvb3RVXSA9IHJvb3RWOwoKICAgIHJldHVybiB0cnVlOwoKfQoKdmVjdG9yPHBhaXI8aW50LGludD4+IGFkaltMaW1dOwoKdmVjdG9yPGVkZ2U+IGFkajI7Cgp2b2lkIGlucHV0KCkgewoKICAgIGNpbiA+PiBuID4+IG07CgogICAgY2luID4+IGEgPj4gYiA+PiBjOwoKICAgIGZvciAoIGludCBpID0gMTsgaSA8PSBtOyBpKysgKSB7CgogICAgICAgIGludCB1LCB2LCB3OwoKICAgICAgICBjaW4gPj4gdSA+PiB2ID4+IHc7CgogICAgICAgIGFkalt1XS5wdXNoX2JhY2soe3Ysd30pOwoKICAgICAgICBhZGpbdl0ucHVzaF9iYWNrKHt1LHd9KTsKCiAgICB9Cgp9Cgp2b2lkIGRmcyhpbnQgdSkgewoKICAgIGxpdmVbdV0gPSB0cnVlOwoKICAgIGZvciAoYXV0byBbdiwgd10gOiBhZGpbdV0pIHsKCiAgICAgICAgaWYgKCFsaXZlW3ZdKSB7CgogICAgICAgICAgICBkZnModik7CgogICAgICAgICAgICBpZiAodnNbdl0pIHZzW3VdID0gdHJ1ZTsgIAoKICAgICAgICB9CgogICAgfQoKfQoKdm9pZCBzb2x2ZSgpIHsKCiAgICB2c1thXSA9IHRydWU7CgogICAgdnNbYl0gPSB0cnVlOwoKICAgIHZzW2NdID0gdHJ1ZTsKCiAgICBkZnMoYSk7CgogICAgZm9yICggaW50IGkgPSAxOyBpIDw9IG47IGkrKyApIGlmICggdnNbaV0gPT0gdHJ1ZSApIHByW2ldID0gaTsKCiAgICBmb3IgKCBpbnQgaSA9IDE7IGkgPD0gbjsgaSsrICkgewoKICAgICAgICBpZiAoIHZzW2ldID09IHRydWUgKSB7CgogICAgICAgICAgICBmb3IgKCBwYWlyPGludCxpbnQ+IGogOiBhZGpbaV0gKSB7CgogICAgICAgICAgICAgICAgaW50IGsgPSBqLmZpcnN0OwoKICAgICAgICAgICAgICAgIGludCB3ID0gai5zZWNvbmQ7CgogICAgICAgICAgICAgICAgaWYgKHZzW2ldICYmIHZzW2tdICYmIGkgPCBrKSB7CgogICAgICAgICAgICAgICAgICAgIGFkajIucHVzaF9iYWNrKHtpLCBrLCB3fSk7CgogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgfQoKICAgICAgICB9CgogICAgfQoKICAgIHNvcnQoYWRqMi5iZWdpbigpLCBhZGoyLmVuZCgpLCBbXShlZGdlIGEsIGVkZ2UgYikgewoKICAgICAgICByZXR1cm4gYS53IDwgYi53OwoKICAgIH0pOwoKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgKGludClhZGoyLnNpemUoKTsgaSsrKSB7CgogICAgICAgIGludCB1ID0gYWRqMltpXS51OwoKICAgICAgICBpbnQgdiA9IGFkajJbaV0udjsKCiAgICAgICAgaW50IHcgPSBhZGoyW2ldLnc7CgoKICAgICAgICBpZiAoam9pbih1LCB2KSkgYW5zICs9IHc7CiAgICAgICAgCiAgICB9CgoKfQoKdm9pZCBvdXRwdXQoKSB7CgogICAgY291dCA8PCBhbnM7Cgp9CgppbnQzMl90IG1haW4oKSB7CgogICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbygwKTsKICAgIGNpbi50aWUobnVsbHB0cik7CgogICAgaWYgKCBmb3BlbigidGVzdF9jYXNlLmlucCIsInIiKSApIHsKCiAgICAgICAgZnJlb3BlbigidGVzdF9jYXNlLmlucCIsInIiLHN0ZGluKTsKICAgICAgICBmcmVvcGVuKCJ0ZXN0X2Nhc2Uub3V0IiwidyIsc3Rkb3V0KTsKCiAgICB9CgogICAgaW5wdXQoKTsKCiAgICBzb2x2ZSgpOwoKICAgIG91dHB1dCgpOwoKICAgIHJldHVybiAwOwoKfQo=