#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
#define s second
#define f first
typedef pair<ll, ll> pii;
const ll INF = 1e16;
const int N = 1e5 + 1;
vector<pii> graf[N];
void dijkstra(int start, vector<ll>& odl){
odl[start] = 0;
priority_queue<pii, vector<pii>, greater<pii>> pq;
pq.push({0, start});
while(!pq.empty()){
ll w = pq.top().f;
ll v = pq.top().s;
pq.pop();
if(w > odl[v]) continue;
for(pii x : graf[v]){
ll u = x.f;
ll waga = x.s;
ll n_dyst = waga + w;
if(n_dyst < odl[u]){
odl[u] = n_dyst;
pq.push({n_dyst, u});
}
}
}
}
int main(){
ios_base::sync_with_stdio(0);
cin.tie(0);
int n, m;
cin >> n >> m;
int s, t, u, v;
cin >> s >> t >> u >> v;
vector<pair<pair<int, int>, ll>> kraw(m);
vector<int> graf2[n + 1], graf3[n + 1];
for(int i = 0; i < m; i++){
int a, b, c;
cin >> a >> b >> c;
graf[a].push_back({b, c});
graf[b].push_back({a, c});
kraw[i] = {{a, b}, c};
}
vector<ll> du(N, INF), dv(N, INF), ds(N, INF), dt(N, INF);
dijkstra(s, ds);
dijkstra(v, dv);
dijkstra(t, dt);
dijkstra(u, du);
ll najk = ds[t];
vector<int> czy(N, 0);
vector<int> topo1, topo2;
for(int i = 1; i <= n; i++){
if(ds[i] + dt[i] == najk && najk != INF){
czy[i] = 1;
}
}
vector<int> stopien1(n + 1, 0), stopien2(n + 1, 0);
for(auto kr : kraw){
int a = kr.f.f, b = kr.f.s;
int w = kr.s;
if(ds[a] + w == ds[b] && czy[a] == 1 && czy[b] == 1){
graf2[a].push_back(b);
stopien1[b]++;
}
if(ds[b] + w == ds[a] && czy[a] == 1 && czy[b] == 1){
graf2[b].push_back(a);
stopien1[a]++;
}
if(dt[a] + w == dt[b] && czy[a] == 1 && czy[b] == 1){
graf3[a].push_back(b);
stopien2[b]++;
}
if(dt[b] + w == dt[a] && czy[a] == 1 && czy[b] == 1){
graf3[b].push_back(a);
stopien2[a]++;
}
}
queue<int> q;
for(int i = 1; i <= n; i++){
if(czy[i] == 1 && stopien1[i] == 0){
q.push(i);
}
}
while(!q.empty()){
int x = q.front(); q.pop();
topo1.push_back(x);
for(int y : graf2[x]){
stopien1[y]--;
if(stopien1[y] == 0){
q.push(y);
}
}
}
vector<ll> dp1(n + 1, INF), dp2(n + 1, INF);
for(int i : topo1){
dp1[i] = du[i];
}
for(int i : topo1){
for(int j : graf2[i]){
if(dp1[j] > dp1[i]) dp1[j] = dp1[i];
}
}
for(int i = 1; i <= n; i++){
if(czy[i] == 1 && stopien2[i] == 0){
q.push(i);
}
}
while(!q.empty()){
int x = q.front(); q.pop();
topo2.push_back(x);
for(int y : graf3[x]){
stopien2[y]--;
if(stopien2[y] == 0){
q.push(y);
}
}
}
for(int i : topo2){
dp2[i] = du[i];
}
for(int i : topo2){
for(int j : graf3[i]){
if(dp2[j] > dp2[i]) dp2[j] = dp2[i];
}
}
ll ans = du[v];
for(int x : topo1){
ans = min(ans, min(dp1[x] + dv[x], dp2[x] + dv[x]));
}
cout << ans;
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKdHlwZWRlZiBsb25nIGxvbmcgbGw7CiNkZWZpbmUgcyBzZWNvbmQKI2RlZmluZSBmIGZpcnN0CnR5cGVkZWYgcGFpcjxsbCwgbGw+IHBpaTsKCmNvbnN0IGxsIElORiA9IDFlMTY7CmNvbnN0IGludCBOID0gMWU1ICsgMTsKdmVjdG9yPHBpaT4gZ3JhZltOXTsKCgp2b2lkIGRpamtzdHJhKGludCBzdGFydCwgdmVjdG9yPGxsPiYgb2RsKXsKICAgIG9kbFtzdGFydF0gPSAwOwogICAgcHJpb3JpdHlfcXVldWU8cGlpLCB2ZWN0b3I8cGlpPiwgZ3JlYXRlcjxwaWk+PiBwcTsKICAgIHBxLnB1c2goezAsIHN0YXJ0fSk7CgogICAgd2hpbGUoIXBxLmVtcHR5KCkpewogICAgICAgIGxsIHcgPSBwcS50b3AoKS5mOwogICAgICAgIGxsIHYgPSBwcS50b3AoKS5zOwogICAgICAgIHBxLnBvcCgpOwoKICAgICAgICBpZih3ID4gb2RsW3ZdKSBjb250aW51ZTsKICAgICAgICBmb3IocGlpIHggOiBncmFmW3ZdKXsKICAgICAgICAgICAgbGwgdSA9IHguZjsKICAgICAgICAgICAgbGwgd2FnYSA9IHguczsKCiAgICAgICAgICAgIGxsIG5fZHlzdCA9IHdhZ2EgKyB3OwogICAgICAgICAgICBpZihuX2R5c3QgPCBvZGxbdV0pewogICAgICAgICAgICAgICAgb2RsW3VdID0gbl9keXN0OwogICAgICAgICAgICAgICAgcHEucHVzaCh7bl9keXN0LCB1fSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9Cgp9CgoKaW50IG1haW4oKXsKICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oMCk7CiAgICBjaW4udGllKDApOwoKCiAgICBpbnQgbiwgbTsKICAgIGNpbiA+PiBuID4+IG07CgogICAgaW50IHMsIHQsIHUsIHY7CiAgICBjaW4gPj4gcyA+PiB0ID4+IHUgPj4gdjsKCiAgICB2ZWN0b3I8cGFpcjxwYWlyPGludCwgaW50PiwgbGw+PiBrcmF3KG0pOwogICAgdmVjdG9yPGludD4gZ3JhZjJbbiArIDFdLCBncmFmM1tuICsgMV07CiAgICBmb3IoaW50IGkgPSAwOyBpIDwgbTsgaSsrKXsKICAgICAgICBpbnQgYSwgYiwgYzsKICAgICAgICBjaW4gPj4gYSA+PiBiID4+IGM7CiAgICAgICAgZ3JhZlthXS5wdXNoX2JhY2soe2IsIGN9KTsKICAgICAgICBncmFmW2JdLnB1c2hfYmFjayh7YSwgY30pOwogICAgICAgIGtyYXdbaV0gPSB7e2EsIGJ9LCBjfTsKICAgIH0KCiAgICB2ZWN0b3I8bGw+IGR1KE4sIElORiksIGR2KE4sIElORiksIGRzKE4sIElORiksIGR0KE4sIElORik7CgogICAgZGlqa3N0cmEocywgZHMpOwogICAgZGlqa3N0cmEodiwgZHYpOwogICAgZGlqa3N0cmEodCwgZHQpOwogICAgZGlqa3N0cmEodSwgZHUpOwoKICAgIGxsIG5hamsgPSBkc1t0XTsKICAgIHZlY3RvcjxpbnQ+IGN6eShOLCAwKTsKICAgIHZlY3RvcjxpbnQ+IHRvcG8xLCB0b3BvMjsKICAgIGZvcihpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKXsKICAgICAgICBpZihkc1tpXSArIGR0W2ldID09IG5hamsgJiYgbmFqayAhPSBJTkYpewogICAgICAgICAgICBjenlbaV0gPSAxOwogICAgICAgIH0KICAgIH0KCiAgICB2ZWN0b3I8aW50PiBzdG9waWVuMShuICsgMSwgMCksIHN0b3BpZW4yKG4gKyAxLCAwKTsKICAgIGZvcihhdXRvIGtyIDoga3Jhdyl7CiAgICAgICAgaW50IGEgPSBrci5mLmYsIGIgPSBrci5mLnM7CiAgICAgICAgaW50IHcgPSBrci5zOwoKICAgICAgICBpZihkc1thXSArIHcgPT0gZHNbYl0gJiYgY3p5W2FdID09IDEgJiYgY3p5W2JdID09IDEpewogICAgICAgICAgICBncmFmMlthXS5wdXNoX2JhY2soYik7CiAgICAgICAgICAgIHN0b3BpZW4xW2JdKys7CiAgICAgICAgfQogICAgICAgIGlmKGRzW2JdICsgdyA9PSBkc1thXSAmJiBjenlbYV0gPT0gMSAmJiBjenlbYl0gPT0gMSl7CiAgICAgICAgICAgIGdyYWYyW2JdLnB1c2hfYmFjayhhKTsKICAgICAgICAgICAgc3RvcGllbjFbYV0rKzsKICAgICAgICB9CiAgICAgICAgaWYoZHRbYV0gKyB3ID09IGR0W2JdICYmIGN6eVthXSA9PSAxICYmIGN6eVtiXSA9PSAxKXsKICAgICAgICAgICAgZ3JhZjNbYV0ucHVzaF9iYWNrKGIpOwogICAgICAgICAgICBzdG9waWVuMltiXSsrOwogICAgICAgIH0KICAgICAgICBpZihkdFtiXSArIHcgPT0gZHRbYV0gJiYgY3p5W2FdID09IDEgJiYgY3p5W2JdID09IDEpewogICAgICAgICAgICBncmFmM1tiXS5wdXNoX2JhY2soYSk7CiAgICAgICAgICAgIHN0b3BpZW4yW2FdKys7CiAgICAgICAgfQoKICAgIH0KCiAgICBxdWV1ZTxpbnQ+IHE7CiAgICBmb3IoaW50IGkgPSAxOyBpIDw9IG47IGkrKyl7CiAgICAgICAgaWYoY3p5W2ldID09IDEgJiYgc3RvcGllbjFbaV0gPT0gMCl7CiAgICAgICAgICAgIHEucHVzaChpKTsKICAgICAgICB9CiAgICB9CgogICAgd2hpbGUoIXEuZW1wdHkoKSl7CiAgICAgICAgaW50IHggPSBxLmZyb250KCk7IHEucG9wKCk7CiAgICAgICAgdG9wbzEucHVzaF9iYWNrKHgpOwoKICAgICAgICBmb3IoaW50IHkgOiBncmFmMlt4XSl7CiAgICAgICAgICAgIHN0b3BpZW4xW3ldLS07CiAgICAgICAgICAgIGlmKHN0b3BpZW4xW3ldID09IDApewogICAgICAgICAgICAgICAgcS5wdXNoKHkpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIHZlY3RvcjxsbD4gZHAxKG4gKyAxLCBJTkYpLCBkcDIobiArIDEsIElORik7CiAgICBmb3IoaW50IGkgOiB0b3BvMSl7CiAgICAgICAgZHAxW2ldID0gZHVbaV07CiAgICB9CgogICAgZm9yKGludCBpIDogdG9wbzEpewogICAgICAgIGZvcihpbnQgaiA6IGdyYWYyW2ldKXsKICAgICAgICAgICAgaWYoZHAxW2pdID4gZHAxW2ldKSBkcDFbal0gPSBkcDFbaV07CiAgICAgICAgfQogICAgfQoKICAgIGZvcihpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKXsKICAgICAgICBpZihjenlbaV0gPT0gMSAmJiBzdG9waWVuMltpXSA9PSAwKXsKICAgICAgICAgICAgcS5wdXNoKGkpOwogICAgICAgIH0KICAgIH0KCiAgICB3aGlsZSghcS5lbXB0eSgpKXsKICAgICAgICBpbnQgeCA9IHEuZnJvbnQoKTsgcS5wb3AoKTsKICAgICAgICB0b3BvMi5wdXNoX2JhY2soeCk7CgogICAgICAgIGZvcihpbnQgeSA6IGdyYWYzW3hdKXsKICAgICAgICAgICAgc3RvcGllbjJbeV0tLTsKICAgICAgICAgICAgaWYoc3RvcGllbjJbeV0gPT0gMCl7CiAgICAgICAgICAgICAgICBxLnB1c2goeSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgZm9yKGludCBpIDogdG9wbzIpewogICAgICAgIGRwMltpXSA9IGR1W2ldOwogICAgfQoKICAgIGZvcihpbnQgaSA6IHRvcG8yKXsKICAgICAgICBmb3IoaW50IGogOiBncmFmM1tpXSl7CiAgICAgICAgICAgIGlmKGRwMltqXSA+IGRwMltpXSkgZHAyW2pdID0gZHAyW2ldOwogICAgICAgIH0KICAgIH0KCiAgICBsbCBhbnMgPSBkdVt2XTsKICAgIGZvcihpbnQgeCA6IHRvcG8xKXsKICAgICAgICBhbnMgPSBtaW4oYW5zLCBtaW4oZHAxW3hdICsgZHZbeF0sIGRwMlt4XSArIGR2W3hdKSk7CiAgICB9CiAgICBjb3V0IDw8IGFuczsKCgogICAgcmV0dXJuIDA7Cn0K