// TranThienPhuc2657
#include <bits/stdc++.h>
using namespace std;
#define file "TASK"
#define TIME 1.0 * clock() / CLOCKS_PER_SEC
#define ll long long
#define pb push_back
#define fi first
#define se second
#define pii pair <int, int>
#define pll pair <ll, ll>
#define Sz(x) ((int) (x).size())
#define getBit(mask, i) (((mask) >> (i)) & 1)
template <typename T1, typename T2> bool mini(T1 &A, T2 B) {if (A > B) A = B; else return 0; return 1;}
template <typename T1, typename T2> bool maxi(T1 &A, T2 B) {if (A < B) A = B; else return 0; return 1;}
const int inf = 2e9 + 7;
const ll linf = 1e18l + 7;
const int mod = 1e9 + 7;
const int N = 2e5 + 5;
int n, m, A, B, C, D;
vector <pii> adj[N];
vector <int> nadj[N];
ll dA[N], dB[N], dC[N], dD[N];
int in[N];
ll dpC[N], dpD[N];
ll res = linf;
// inp
void inp() {
cin >> n >> m >> A >> B >> C >> D;
for (int i = 1; i <= m; i++) {
int u, v, w; cin >> u >> v >> w;
adj[u].pb({v, w});
adj[v].pb({u, w});
}
}
// init
void dijkstra(ll *d, const int &s) {
for (int u = 1; u <= n; u++) d[u] = linf;
priority_queue <pll, vector <pll>, greater <pll>> pq;
d[s] = 0;
pq.push({0, s});
while (!pq.empty()) {
ll du = pq.top().fi, u = pq.top().se; pq.pop();
if (du > d[u]) continue;
for (pii e: adj[u]) {
int v = e.fi, w = e.se;
if (mini(d[v], d[u] + w)) pq.push({d[v], v});
}
}
}
bool inSP(int u, int v, int w) {
return dA[u] + w == dA[v] and dA[u] + w + dB[v] == dA[B];
}
void init() {
dijkstra(dA, A); dijkstra(dB, B); dijkstra(dC, C); dijkstra(dD, D);
for (int u = 1; u <= n; u++) {
for (pii e: adj[u]) {
int v = e.fi, w = e.se;
if (inSP(u, v, w)) {
nadj[u].pb(v);
in[v]++;
}
}
}
}
// proc
void proc() {
for (int u = 1; u <= n; u++) dpC[u] = dpD[u] = linf;
queue <int> q;
for (int u = 1; u <= n; u++) if (!in[u]) q.push(u);
while (!q.empty()) {
int u = q.front(); q.pop();
mini(dpC[u], dC[u]);
mini(dpD[u], dD[u]);
mini(res, dpC[u] + dD[u]);
mini(res, dpD[u] + dC[u]);
for (int v: nadj[u]) {
mini(dpC[v], dpC[u]);
mini(dpD[v], dpD[u]);
if (--in[v] == 0) q.push(v);
}
}
cout << res;
}
signed main() {
ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
if (fopen(file".inp", "r")) {
freopen(file".inp", "r", stdin);
freopen(file".out", "w", stdout);
}
inp();
init();
proc();
cerr << "Time elapsed: " << TIME << "s.\n";
return 0;
}
Ly8gVHJhblRoaWVuUGh1YzI2NTcKI2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgZmlsZSAiVEFTSyIKI2RlZmluZSBUSU1FIDEuMCAqIGNsb2NrKCkgLyBDTE9DS1NfUEVSX1NFQwojZGVmaW5lIGxsIGxvbmcgbG9uZwojZGVmaW5lIHBiIHB1c2hfYmFjawojZGVmaW5lIGZpIGZpcnN0CiNkZWZpbmUgc2Ugc2Vjb25kCiNkZWZpbmUgcGlpIHBhaXIgPGludCwgaW50PgojZGVmaW5lIHBsbCBwYWlyIDxsbCwgbGw+CiNkZWZpbmUgU3ooeCkgKChpbnQpICh4KS5zaXplKCkpCiNkZWZpbmUgZ2V0Qml0KG1hc2ssIGkpICgoKG1hc2spID4+IChpKSkgJiAxKQp0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPiBib29sIG1pbmkoVDEgJkEsIFQyIEIpIHtpZiAoQSA+IEIpIEEgPSBCOyBlbHNlIHJldHVybiAwOyByZXR1cm4gMTt9CnRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+IGJvb2wgbWF4aShUMSAmQSwgVDIgQikge2lmIChBIDwgQikgQSA9IEI7IGVsc2UgcmV0dXJuIDA7IHJldHVybiAxO30KY29uc3QgaW50IGluZiA9IDJlOSArIDc7CmNvbnN0IGxsIGxpbmYgPSAxZTE4bCArIDc7CmNvbnN0IGludCBtb2QgPSAxZTkgKyA3Owpjb25zdCBpbnQgTiA9IDJlNSArIDU7CgppbnQgbiwgbSwgQSwgQiwgQywgRDsKdmVjdG9yIDxwaWk+IGFkaltOXTsKdmVjdG9yIDxpbnQ+IG5hZGpbTl07CmxsIGRBW05dLCBkQltOXSwgZENbTl0sIGREW05dOwppbnQgaW5bTl07CmxsIGRwQ1tOXSwgZHBEW05dOwpsbCByZXMgPSBsaW5mOwoKLy8gaW5wCnZvaWQgaW5wKCkgewogICAgY2luID4+IG4gPj4gbSA+PiBBID4+IEIgPj4gQyA+PiBEOwogICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gbTsgaSsrKSB7CiAgICAgICAgaW50IHUsIHYsIHc7IGNpbiA+PiB1ID4+IHYgPj4gdzsKICAgICAgICBhZGpbdV0ucGIoe3YsIHd9KTsKICAgICAgICBhZGpbdl0ucGIoe3UsIHd9KTsKICAgIH0KfQoKLy8gaW5pdAp2b2lkIGRpamtzdHJhKGxsICpkLCBjb25zdCBpbnQgJnMpIHsKICAgIGZvciAoaW50IHUgPSAxOyB1IDw9IG47IHUrKykgZFt1XSA9IGxpbmY7CiAgICBwcmlvcml0eV9xdWV1ZSA8cGxsLCB2ZWN0b3IgPHBsbD4sIGdyZWF0ZXIgPHBsbD4+IHBxOwogICAgZFtzXSA9IDA7CiAgICBwcS5wdXNoKHswLCBzfSk7CgogICAgd2hpbGUgKCFwcS5lbXB0eSgpKSB7CiAgICAgICAgbGwgZHUgPSBwcS50b3AoKS5maSwgdSA9IHBxLnRvcCgpLnNlOyBwcS5wb3AoKTsKICAgICAgICBpZiAoZHUgPiBkW3VdKSBjb250aW51ZTsKICAgICAgICBmb3IgKHBpaSBlOiBhZGpbdV0pIHsKICAgICAgICAgICAgaW50IHYgPSBlLmZpLCB3ID0gZS5zZTsKICAgICAgICAgICAgaWYgKG1pbmkoZFt2XSwgZFt1XSArIHcpKSBwcS5wdXNoKHtkW3ZdLCB2fSk7CiAgICAgICAgfQogICAgfQp9Cgpib29sIGluU1AoaW50IHUsIGludCB2LCBpbnQgdykgewogICAgcmV0dXJuIGRBW3VdICsgdyA9PSBkQVt2XSBhbmQgZEFbdV0gKyB3ICsgZEJbdl0gPT0gZEFbQl07Cn0KCnZvaWQgaW5pdCgpIHsKICAgIGRpamtzdHJhKGRBLCBBKTsgZGlqa3N0cmEoZEIsIEIpOyBkaWprc3RyYShkQywgQyk7IGRpamtzdHJhKGRELCBEKTsKCiAgICBmb3IgKGludCB1ID0gMTsgdSA8PSBuOyB1KyspIHsKICAgICAgICBmb3IgKHBpaSBlOiBhZGpbdV0pIHsKICAgICAgICAgICAgaW50IHYgPSBlLmZpLCB3ID0gZS5zZTsKICAgICAgICAgICAgaWYgKGluU1AodSwgdiwgdykpIHsKICAgICAgICAgICAgICAgIG5hZGpbdV0ucGIodik7CiAgICAgICAgICAgICAgICBpblt2XSsrOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQp9CgovLyBwcm9jCnZvaWQgcHJvYygpIHsKICAgIGZvciAoaW50IHUgPSAxOyB1IDw9IG47IHUrKykgZHBDW3VdID0gZHBEW3VdID0gbGluZjsKICAgIHF1ZXVlIDxpbnQ+IHE7CiAgICBmb3IgKGludCB1ID0gMTsgdSA8PSBuOyB1KyspIGlmICghaW5bdV0pIHEucHVzaCh1KTsKICAgIHdoaWxlICghcS5lbXB0eSgpKSB7CiAgICAgICAgaW50IHUgPSBxLmZyb250KCk7IHEucG9wKCk7CgogICAgICAgIG1pbmkoZHBDW3VdLCBkQ1t1XSk7CiAgICAgICAgbWluaShkcERbdV0sIGREW3VdKTsKCiAgICAgICAgbWluaShyZXMsIGRwQ1t1XSArIGREW3VdKTsKICAgICAgICBtaW5pKHJlcywgZHBEW3VdICsgZENbdV0pOwoKICAgICAgICBmb3IgKGludCB2OiBuYWRqW3VdKSB7CiAgICAgICAgICAgIG1pbmkoZHBDW3ZdLCBkcENbdV0pOwogICAgICAgICAgICBtaW5pKGRwRFt2XSwgZHBEW3VdKTsKCiAgICAgICAgICAgIGlmICgtLWluW3ZdID09IDApIHEucHVzaCh2KTsKICAgICAgICB9CiAgICB9CgogICAgY291dCA8PCByZXM7Cn0KCnNpZ25lZCBtYWluKCkgewogICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbygwKTsgY2luLnRpZSgwKTsgY291dC50aWUoMCk7CiAgICBpZiAoZm9wZW4oZmlsZSIuaW5wIiwgInIiKSkgewogICAgICAgIGZyZW9wZW4oZmlsZSIuaW5wIiwgInIiLCBzdGRpbik7CiAgICAgICAgZnJlb3BlbihmaWxlIi5vdXQiLCAidyIsIHN0ZG91dCk7CiAgICB9CgogICAgaW5wKCk7CiAgICBpbml0KCk7CiAgICBwcm9jKCk7CiAgICBjZXJyIDw8ICJUaW1lIGVsYXBzZWQ6ICIgPDwgVElNRSA8PCAicy5cbiI7CiAgICByZXR1cm4gMDsKfQoK