#include <bits/stdc++.h> // NeOWami
using namespace std;
#define ft first
#define sc second
#define int long long
using pii = pair<int, int>;
template<class T> using heapmin = priority_queue<T, vector<T>, greater<T>>;
const int N = 2e5 + 5;
const int inf = 1e18;
int n, m;
int S, T, U, V;
struct Edge {
int u, v, w;
} E[N];
vector<pii> G[N];
bool ckmin(int &u, int v) {
if (u > v) return u = v, 1;
return 0;
}
namespace subfull {
int distS[N], distT[N], distV[N], distU[N];
int candE[N];
vector<pii> g[N];
void calc(int root, int dist[], vector<pii> G[]) {
heapmin<pii> Q;
for (int i = 1; i <= n; i++) dist[i] = inf;
dist[root] = 0;
Q.push({0, root});
while(!Q.empty()) {
int u = Q.top().sc, old = Q.top().ft;
Q.pop();
if (old != dist[u]) continue;
for (pii item: G[u]) {
int v = item.ft, w = item.sc;
if (ckmin(dist[v], w + dist[u])) {
Q.push({dist[v], v});
}
}
}
}
int getMinU() {
for (int i = 1; i <= n; i++) g[i].clear();
for (int i = 1; i <= m; i++) {
int u = E[i].u, v = E[i].v, w = E[i].w;
if (candE[i] == 0) {
g[u].push_back({v, w});
g[v].push_back({u, w});
}
if (candE[i] == 1) {
g[u].push_back({v, 0});
}
if (candE[i] == 2) {
g[v].push_back({u, 0});
}
}
calc(U, distU, g);
int mmin = inf;
for (int mid = 1; mid <= n; mid++) mmin = min(mmin, distU[mid] + distV[mid]);
return mmin;
}
void solve() {
calc(S, distS, G);
calc(T, distT, G);
calc(V, distV, G);
fill(candE + 1, candE + m + 1, 0);
int ans = distV[U];
for (int i = 1; i <= m; i++) {
int u = E[i].u, v = E[i].v, w = E[i].w;
if (distS[u] + w + distT[v] == distS[T]) candE[i] = 1;
if (distS[v] + w + distT[u] == distS[T]) candE[i] = 2;
}
ans = min(ans, getMinU());
for (int i = 1; i <= m; i++) {
if (candE[i] == 2) candE[i] = 1;
else if (candE[i] == 1) candE[i] = 2;
}
ans = min(ans, getMinU());
cout << ans;
}
};
signed main() {
cin.tie(NULL)->sync_with_stdio(false);
if(ifstream("PATH.inp")) {
freopen("PATH.inp", "r", stdin);
freopen("PATH.out", "w", stdout);
}
cin >> n >> m >> S >> T >> U >> V;
for (int i = 1; i <= m; i++) {
int u, v, w; cin >> u >> v >> w;
E[i] = {u, v, w};
G[u].push_back({v, w});
G[v].push_back({u, w});
}
return subfull::solve(), 0;
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+IC8vIE5lT1dhbWkKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCiNkZWZpbmUgZnQgZmlyc3QKI2RlZmluZSBzYyBzZWNvbmQKI2RlZmluZSBpbnQgbG9uZyBsb25nCnVzaW5nIHBpaSA9IHBhaXI8aW50LCBpbnQ+Owp0ZW1wbGF0ZTxjbGFzcyBUPiB1c2luZyBoZWFwbWluID0gcHJpb3JpdHlfcXVldWU8VCwgdmVjdG9yPFQ+LCBncmVhdGVyPFQ+PjsKCmNvbnN0IGludCBOID0gMmU1ICsgNTsKY29uc3QgaW50IGluZiA9IDFlMTg7CmludCBuLCBtOwppbnQgUywgVCwgVSwgVjsKCnN0cnVjdCBFZGdlIHsKICAgIGludCB1LCB2LCB3Owp9IEVbTl07CnZlY3RvcjxwaWk+IEdbTl07Cgpib29sIGNrbWluKGludCAmdSwgaW50IHYpIHsKICAgIGlmICh1ID4gdikgcmV0dXJuIHUgPSB2LCAxOwogICAgcmV0dXJuIDA7Cn0KCgpuYW1lc3BhY2Ugc3ViZnVsbCB7CmludCBkaXN0U1tOXSwgZGlzdFRbTl0sIGRpc3RWW05dLCBkaXN0VVtOXTsKaW50IGNhbmRFW05dOwp2ZWN0b3I8cGlpPiBnW05dOwoKdm9pZCBjYWxjKGludCByb290LCBpbnQgZGlzdFtdLCB2ZWN0b3I8cGlpPiBHW10pIHsKICAgIGhlYXBtaW48cGlpPiBROwogICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKSBkaXN0W2ldID0gaW5mOwogICAgZGlzdFtyb290XSA9IDA7CiAgICBRLnB1c2goezAsIHJvb3R9KTsKICAgIHdoaWxlKCFRLmVtcHR5KCkpIHsKICAgICAgICBpbnQgdSA9IFEudG9wKCkuc2MsIG9sZCA9IFEudG9wKCkuZnQ7CiAgICAgICAgUS5wb3AoKTsKICAgICAgICBpZiAob2xkICE9IGRpc3RbdV0pIGNvbnRpbnVlOwogICAgICAgIGZvciAocGlpIGl0ZW06IEdbdV0pIHsKICAgICAgICAgICAgaW50IHYgPSBpdGVtLmZ0LCB3ID0gaXRlbS5zYzsKICAgICAgICAgICAgaWYgKGNrbWluKGRpc3Rbdl0sIHcgKyBkaXN0W3VdKSkgewogICAgICAgICAgICAgICAgUS5wdXNoKHtkaXN0W3ZdLCB2fSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9Cn0KCmludCBnZXRNaW5VKCkgewogICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKSBnW2ldLmNsZWFyKCk7CiAgICBmb3IgKGludCBpID0gMTsgaSA8PSBtOyBpKyspIHsKICAgICAgICBpbnQgdSA9IEVbaV0udSwgdiA9IEVbaV0udiwgdyA9IEVbaV0udzsKICAgICAgICBpZiAoY2FuZEVbaV0gPT0gMCkgewogICAgICAgICAgICBnW3VdLnB1c2hfYmFjayh7diwgd30pOwogICAgICAgICAgICBnW3ZdLnB1c2hfYmFjayh7dSwgd30pOwogICAgICAgIH0KICAgICAgICBpZiAoY2FuZEVbaV0gPT0gMSkgewogICAgICAgICAgICBnW3VdLnB1c2hfYmFjayh7diwgMH0pOwogICAgICAgIH0KICAgICAgICBpZiAoY2FuZEVbaV0gPT0gMikgewogICAgICAgICAgICBnW3ZdLnB1c2hfYmFjayh7dSwgMH0pOwogICAgICAgIH0KICAgIH0KICAgIGNhbGMoVSwgZGlzdFUsIGcpOwogICAgaW50IG1taW4gPSBpbmY7CiAgICBmb3IgKGludCBtaWQgPSAxOyBtaWQgPD0gbjsgbWlkKyspIG1taW4gPSBtaW4obW1pbiwgZGlzdFVbbWlkXSArIGRpc3RWW21pZF0pOwogICAgcmV0dXJuIG1taW47Cn0KCnZvaWQgc29sdmUoKSB7CiAgICBjYWxjKFMsIGRpc3RTLCBHKTsKICAgIGNhbGMoVCwgZGlzdFQsIEcpOwogICAgY2FsYyhWLCBkaXN0ViwgRyk7CiAgICBmaWxsKGNhbmRFICsgMSwgY2FuZEUgKyBtICsgMSwgMCk7CiAgICBpbnQgYW5zID0gZGlzdFZbVV07CiAgICBmb3IgKGludCBpID0gMTsgaSA8PSBtOyBpKyspIHsKICAgICAgICBpbnQgdSA9IEVbaV0udSwgdiA9IEVbaV0udiwgdyA9IEVbaV0udzsKICAgICAgICBpZiAoZGlzdFNbdV0gKyB3ICsgZGlzdFRbdl0gPT0gZGlzdFNbVF0pIGNhbmRFW2ldID0gMTsKICAgICAgICBpZiAoZGlzdFNbdl0gKyB3ICsgZGlzdFRbdV0gPT0gZGlzdFNbVF0pIGNhbmRFW2ldID0gMjsKICAgIH0KICAgIGFucyA9IG1pbihhbnMsIGdldE1pblUoKSk7CiAgICBmb3IgKGludCBpID0gMTsgaSA8PSBtOyBpKyspIHsKICAgICAgICBpZiAoY2FuZEVbaV0gPT0gMikgY2FuZEVbaV0gPSAxOwogICAgICAgIGVsc2UgaWYgKGNhbmRFW2ldID09IDEpIGNhbmRFW2ldID0gMjsKICAgIH0KICAgIGFucyA9IG1pbihhbnMsIGdldE1pblUoKSk7CiAgICBjb3V0IDw8IGFuczsKfQp9OwoKc2lnbmVkIG1haW4oKSB7CiAgICBjaW4udGllKE5VTEwpLT5zeW5jX3dpdGhfc3RkaW8oZmFsc2UpOwogICAgaWYoaWZzdHJlYW0oIlBBVEguaW5wIikpIHsKICAgICAgICBmcmVvcGVuKCJQQVRILmlucCIsICJyIiwgc3RkaW4pOwogICAgICAgIGZyZW9wZW4oIlBBVEgub3V0IiwgInciLCBzdGRvdXQpOwogICAgfQogICAgY2luID4+IG4gPj4gbSA+PiBTID4+IFQgPj4gVSA+PiBWOwogICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gbTsgaSsrKSB7CiAgICAgICAgaW50IHUsIHYsIHc7IGNpbiA+PiB1ID4+IHYgPj4gdzsKICAgICAgICBFW2ldID0ge3UsIHYsIHd9OwogICAgICAgIEdbdV0ucHVzaF9iYWNrKHt2LCB3fSk7CiAgICAgICAgR1t2XS5wdXNoX2JhY2soe3UsIHd9KTsKICAgIH0KICAgIHJldHVybiBzdWJmdWxsOjpzb2x2ZSgpLCAwOwogICAgcmV0dXJuIDA7Cn0=