#include<bits/stdc++.h>
using namespace std;
#define int long long
#define ii pair<int,int>
#define iii pair<int, ii>
#define iiii pair<ii,ii>
#define fi first
#define se second
#define inf 10000000000000000
#define pi M_PI
const int N = 1e5 + 5;
int n, m;
int S, T, X, Y;
vector<ii> g[N];
int dx[3*N], dn[N];
vector<ii> g2[3*N], g3[3*N];
vector<iii> canh;
signed main() {
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
if(fopen("main.inp","r")) {
freopen("main.inp", "r", stdin);
freopen("main.out", "w", stdout);
}
cin >> n >> m;
cin >> S >> T >> X >> Y;
for(int i = 1; i <= m; i++) {
int u, v, w;
cin >> u >> v >> w;
g[u].push_back({w,v});
g[v].push_back({w,u});
canh.push_back({w,{u,v}});
}
priority_queue<ii,vector<ii>,greater<ii>> pq;
for(int i = 1; i <= n; i++) dx[i] = inf;
dx[S] = 0;
pq.push({0,S});
while(pq.size()) {
int u = pq.top().se;
int du = pq.top().fi;
pq.pop();
if(du != dx[u]) continue;
for(auto tmp : g[u]) {
int v = tmp.se;
int w = tmp.fi;
if(dx[v] > dx[u] + w) {
dx[v] = dx[u] + w;
pq.push({dx[v],v});
}
}
}
for(int i = 1; i <= n; i++) dn[i] = inf;
dn[T] = 0;
pq.push({0,T});
while(pq.size()) {
int u = pq.top().se;
int du = pq.top().fi;
pq.pop();
if(du != dn[u]) continue;
for(auto tmp : g[u]) {
int v = tmp.se;
int w = tmp.fi;
if(dn[v] > dn[u] + w) {
dn[v] = dn[u] + w;
pq.push({dn[v],v});
}
}
}
for(auto x : canh) {
int i = x.se.fi;
int j = x.se.se;
int w = x.fi;
if(dx[i] + w + dn[j] == dx[T]) {
g3[i].push_back({0,j});
}
if(dx[j] + w + dn[i] == dx[T]) {
g3[j].push_back({0,i});
}
}
for(auto tmp : canh) {
int i = tmp.se.fi;
int j = tmp.se.se;
int w = tmp.fi;
g3[i+n].push_back({w,j+n});
g3[j+n].push_back({w,i+n});
g3[i+2*n].push_back({w,j+2*n});
g3[j+2*n].push_back({w,i+2*n});
g3[i+n].push_back({0,i});
g3[j+n].push_back({0,j});
g3[i].push_back({0,i+2*n});
g3[j].push_back({0,j+2*n});
}
for(int i = 1; i <= 3*n; i++) dx[i] = inf;
dx[Y+n] = 0;
pq.push({0,Y+n});
while(pq.size()) {
int u = pq.top().se;
int du = pq.top().fi;
pq.pop();
if(du != dx[u]) continue;
for(auto tmp : g3[u]) {
int v = tmp.se;
int w = tmp.fi;
if(dx[v] > dx[u] + w) {
dx[v] = dx[u] + w;
pq.push({dx[v],v});
}
}
}
int ans = dx[X+2*n];
for(int i = 1; i <= 3*n; i++) dx[i] = inf;
dx[X+n] = 0;
pq.push({0,X+n});
while(pq.size()) {
int u = pq.top().se;
int du = pq.top().fi;
pq.pop();
if(du != dx[u]) continue;
for(auto tmp : g3[u]) {
int v = tmp.se;
int w = tmp.fi;
if(dx[v] > dx[u] + w) {
dx[v] = dx[u] + w;
pq.push({dx[v],v});
}
}
}
ans = min(ans,dx[Y+2*n]);
cout << ans;
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKI2RlZmluZSBpbnQgbG9uZyBsb25nCiNkZWZpbmUgaWkgcGFpcjxpbnQsaW50PgojZGVmaW5lIGlpaSBwYWlyPGludCwgaWk+CiNkZWZpbmUgaWlpaSBwYWlyPGlpLGlpPgojZGVmaW5lIGZpIGZpcnN0CiNkZWZpbmUgc2Ugc2Vjb25kCiNkZWZpbmUgaW5mIDEwMDAwMDAwMDAwMDAwMDAwCiNkZWZpbmUgcGkgTV9QSQpjb25zdCBpbnQgTiA9IDFlNSArIDU7CmludCBuLCBtOwppbnQgUywgVCwgWCwgWTsKdmVjdG9yPGlpPiBnW05dOwppbnQgZHhbMypOXSwgZG5bTl07CnZlY3RvcjxpaT4gZzJbMypOXSwgZzNbMypOXTsKdmVjdG9yPGlpaT4gY2FuaDsKc2lnbmVkIG1haW4oKSB7CiAgICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKDApOwogICAgY2luLnRpZSgwKTsKICAgIGNvdXQudGllKDApOwogICAgaWYoZm9wZW4oIm1haW4uaW5wIiwiciIpKSB7CiAgICAgICAgZnJlb3BlbigibWFpbi5pbnAiLCAiciIsIHN0ZGluKTsKICAgICAgICBmcmVvcGVuKCJtYWluLm91dCIsICJ3Iiwgc3Rkb3V0KTsKICAgIH0KICAgIGNpbiA+PiBuID4+IG07CiAgICBjaW4gPj4gUyA+PiBUID4+IFggPj4gWTsKICAgIGZvcihpbnQgaSA9IDE7IGkgPD0gbTsgaSsrKSB7CiAgICAgICAgaW50IHUsIHYsIHc7CiAgICAgICAgY2luID4+IHUgPj4gdiA+PiB3OwogICAgICAgIGdbdV0ucHVzaF9iYWNrKHt3LHZ9KTsKICAgICAgICBnW3ZdLnB1c2hfYmFjayh7dyx1fSk7CiAgICAgICAgY2FuaC5wdXNoX2JhY2soe3cse3Usdn19KTsKICAgIH0KCgogICAgcHJpb3JpdHlfcXVldWU8aWksdmVjdG9yPGlpPixncmVhdGVyPGlpPj4gcHE7CiAgICBmb3IoaW50IGkgPSAxOyBpIDw9IG47IGkrKykgZHhbaV0gPSBpbmY7CiAgICBkeFtTXSA9IDA7CiAgICBwcS5wdXNoKHswLFN9KTsKICAgIHdoaWxlKHBxLnNpemUoKSkgewogICAgICAgIGludCB1ID0gcHEudG9wKCkuc2U7CiAgICAgICAgaW50IGR1ID0gcHEudG9wKCkuZmk7CiAgICAgICAgcHEucG9wKCk7CiAgICAgICAgaWYoZHUgIT0gZHhbdV0pIGNvbnRpbnVlOwogICAgICAgIGZvcihhdXRvIHRtcCA6IGdbdV0pIHsKICAgICAgICAgICAgaW50IHYgPSB0bXAuc2U7CiAgICAgICAgICAgIGludCB3ID0gdG1wLmZpOwogICAgICAgICAgICBpZihkeFt2XSA+IGR4W3VdICsgdykgewogICAgICAgICAgICAgICAgZHhbdl0gPSBkeFt1XSArIHc7CiAgICAgICAgICAgICAgICBwcS5wdXNoKHtkeFt2XSx2fSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgZm9yKGludCBpID0gMTsgaSA8PSBuOyBpKyspIGRuW2ldID0gaW5mOwogICAgZG5bVF0gPSAwOwogICAgcHEucHVzaCh7MCxUfSk7CiAgICB3aGlsZShwcS5zaXplKCkpIHsKICAgICAgICBpbnQgdSA9IHBxLnRvcCgpLnNlOwogICAgICAgIGludCBkdSA9IHBxLnRvcCgpLmZpOwogICAgICAgIHBxLnBvcCgpOwogICAgICAgIGlmKGR1ICE9IGRuW3VdKSBjb250aW51ZTsKICAgICAgICBmb3IoYXV0byB0bXAgOiBnW3VdKSB7CiAgICAgICAgICAgIGludCB2ID0gdG1wLnNlOwogICAgICAgICAgICBpbnQgdyA9IHRtcC5maTsKICAgICAgICAgICAgaWYoZG5bdl0gPiBkblt1XSArIHcpIHsKICAgICAgICAgICAgICAgIGRuW3ZdID0gZG5bdV0gKyB3OwogICAgICAgICAgICAgICAgcHEucHVzaCh7ZG5bdl0sdn0pOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIGZvcihhdXRvIHggOiBjYW5oKSB7CiAgICAgICAgICAgIGludCBpID0geC5zZS5maTsKICAgICAgICAgICAgaW50IGogPSB4LnNlLnNlOwogICAgICAgICAgICBpbnQgdyA9IHguZmk7CiAgICAgICAgICAgIGlmKGR4W2ldICsgdyArIGRuW2pdID09IGR4W1RdKSB7CiAgICAgICAgICAgIGczW2ldLnB1c2hfYmFjayh7MCxqfSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYoZHhbal0gKyB3ICsgZG5baV0gPT0gZHhbVF0pIHsKICAgICAgICAgICAgICAgIGczW2pdLnB1c2hfYmFjayh7MCxpfSk7CiAgICAgICAgICAgIH0KCgogICAgfQoKICAgIGZvcihhdXRvIHRtcCA6IGNhbmgpIHsKICAgICAgICAgICAgaW50IGkgPSB0bXAuc2UuZmk7CiAgICAgICAgICAgIGludCBqID0gdG1wLnNlLnNlOwogICAgICAgICAgICBpbnQgdyA9IHRtcC5maTsKICAgICAgICAgICAgZzNbaStuXS5wdXNoX2JhY2soe3csaitufSk7CiAgICAgICAgICAgIGczW2orbl0ucHVzaF9iYWNrKHt3LGkrbn0pOwogICAgICAgICAgICBnM1tpKzIqbl0ucHVzaF9iYWNrKHt3LGorMipufSk7CiAgICAgICAgICAgIGczW2orMipuXS5wdXNoX2JhY2soe3csaSsyKm59KTsKICAgICAgICAgICAgZzNbaStuXS5wdXNoX2JhY2soezAsaX0pOwogICAgICAgICAgICBnM1tqK25dLnB1c2hfYmFjayh7MCxqfSk7CiAgICAgICAgICAgIGczW2ldLnB1c2hfYmFjayh7MCxpKzIqbn0pOwogICAgICAgICAgICBnM1tqXS5wdXNoX2JhY2soezAsaisyKm59KTsKICAgIH0KICAgIGZvcihpbnQgaSA9IDE7IGkgPD0gMypuOyBpKyspIGR4W2ldID0gaW5mOwogICAgZHhbWStuXSA9IDA7CiAgICBwcS5wdXNoKHswLFkrbn0pOwogICAgd2hpbGUocHEuc2l6ZSgpKSB7CiAgICAgICAgaW50IHUgPSBwcS50b3AoKS5zZTsKICAgICAgICBpbnQgZHUgPSBwcS50b3AoKS5maTsKICAgICAgICBwcS5wb3AoKTsKICAgICAgICBpZihkdSAhPSBkeFt1XSkgY29udGludWU7CiAgICAgICAgZm9yKGF1dG8gdG1wIDogZzNbdV0pIHsKICAgICAgICAgICAgaW50IHYgPSB0bXAuc2U7CiAgICAgICAgICAgIGludCB3ID0gdG1wLmZpOwogICAgICAgICAgICBpZihkeFt2XSA+IGR4W3VdICsgdykgewogICAgICAgICAgICAgICAgZHhbdl0gPSBkeFt1XSArIHc7CiAgICAgICAgICAgICAgICBwcS5wdXNoKHtkeFt2XSx2fSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICBpbnQgYW5zID0gZHhbWCsyKm5dOwogICAgZm9yKGludCBpID0gMTsgaSA8PSAzKm47IGkrKykgZHhbaV0gPSBpbmY7CiAgICBkeFtYK25dID0gMDsKICAgIHBxLnB1c2goezAsWCtufSk7CiAgICB3aGlsZShwcS5zaXplKCkpIHsKICAgICAgICBpbnQgdSA9IHBxLnRvcCgpLnNlOwogICAgICAgIGludCBkdSA9IHBxLnRvcCgpLmZpOwogICAgICAgIHBxLnBvcCgpOwogICAgICAgIGlmKGR1ICE9IGR4W3VdKSBjb250aW51ZTsKICAgICAgICBmb3IoYXV0byB0bXAgOiBnM1t1XSkgewogICAgICAgICAgICBpbnQgdiA9IHRtcC5zZTsKICAgICAgICAgICAgaW50IHcgPSB0bXAuZmk7CiAgICAgICAgICAgIGlmKGR4W3ZdID4gZHhbdV0gKyB3KSB7CiAgICAgICAgICAgICAgICBkeFt2XSA9IGR4W3VdICsgdzsKICAgICAgICAgICAgICAgIHBxLnB1c2goe2R4W3ZdLHZ9KTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIGFucyA9IG1pbihhbnMsZHhbWSsyKm5dKTsKICAgIGNvdXQgPDwgYW5zOwogICAgcmV0dXJuIDA7Cn0=