#include <iostream>
#include <vector>
#include <queue>
#include <algorithm>
#include <numeric>
using namespace std;
typedef pair<int,int> pii;
typedef long long ll;
const ll inf = (ll)1e18+7;
template<typename T> bool setmin(T& a, T b) { if (a > b) { a = b; return true; } return false; }
template<typename T> bool setmax(T& a, T b) { if (a < b) { a = b; return true; } return false; }
int main()
{
int n, m;
cin >> n >> m;
int s, t;
cin >> s >> t;
s--; t--;
int u, v;
cin >> u >> v;
u--; v--;
vector<vector<pii> > adj(n);
for (int i = 0; i < m; i++) {
int a, b, c;
cin >> a >> b >> c;
a--; b--;
adj[a].push_back({b, c});
adj[b].push_back({a, c});
}
auto dijkstra = [&](vector<vector<pii> >& g, int a) {
typedef pair<ll,int> point;
vector<ll> dist(n, inf);
priority_queue<point, vector<point>, greater<point> > pq;
dist[a] = 0;
pq.push({0ll, a});
while (not pq.empty()) {
auto [d, cur] = pq.top(); pq.pop();
if (d != dist[cur]) continue;
for (auto [nxt, w] : g[cur]) {
if (setmin(dist[nxt], d + w)) {
pq.push({dist[nxt], nxt});
}
}
}
return dist;
};
auto distS = dijkstra(adj, s);
auto distT = dijkstra(adj, t);
auto distU = dijkstra(adj, u);
auto distV = dijkstra(adj, v);
auto sortedOrder = [&](const vector<ll>& v) {
vector<int> order(v.size());
iota(order.begin(), order.end(), 0);
sort(order.begin(), order.end(), [&](int a, int b) { return v[a] < v[b]; });
return order;
};
ll totDist = distS[t];
ll ans = inf;
{
auto ordS = sortedOrder(distS);
auto dp = distU;
for (int a : ordS) {
for (auto&& [b, w] : adj[a]) {
if (distS[a] + w + distT[b] == totDist) {
setmin(dp[b], dp[a]);
}
}
}
for (int i = 0; i < n; i++) {
setmin(ans, distV[i] + dp[i]);
}
}
{
auto ordT = sortedOrder(distT);
auto dp = distU;
for (int a : ordT) {
for (auto&& [b, w] : adj[a]) {
if (distT[a] + w + distS[b] == totDist) {
setmin(dp[b], dp[a]);
}
}
}
for (int i = 0; i < n; i++) {
setmin(ans, distV[i] + dp[i]);
}
}
cout << ans << endl;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8cXVldWU+CiNpbmNsdWRlIDxhbGdvcml0aG0+CiNpbmNsdWRlIDxudW1lcmljPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKdHlwZWRlZiBwYWlyPGludCxpbnQ+IHBpaTsKdHlwZWRlZiBsb25nIGxvbmcgbGw7Cgpjb25zdCBsbCBpbmYgPSAobGwpMWUxOCs3OwoKdGVtcGxhdGU8dHlwZW5hbWUgVD4gYm9vbCBzZXRtaW4oVCYgYSwgVCBiKSB7IGlmIChhID4gYikgeyBhID0gYjsgcmV0dXJuIHRydWU7IH0gcmV0dXJuIGZhbHNlOyB9CnRlbXBsYXRlPHR5cGVuYW1lIFQ+IGJvb2wgc2V0bWF4KFQmIGEsIFQgYikgeyBpZiAoYSA8IGIpIHsgYSA9IGI7IHJldHVybiB0cnVlOyB9IHJldHVybiBmYWxzZTsgfQoKCmludCBtYWluKCkKewoJaW50IG4sIG07CgljaW4gPj4gbiA+PiBtOwoJaW50IHMsIHQ7CgljaW4gPj4gcyA+PiB0OwoJcy0tOyB0LS07CglpbnQgdSwgdjsKCWNpbiA+PiB1ID4+IHY7Cgl1LS07IHYtLTsKCgl2ZWN0b3I8dmVjdG9yPHBpaT4gPiBhZGoobik7Cglmb3IgKGludCBpID0gMDsgaSA8IG07IGkrKykgewoJCWludCBhLCBiLCBjOwoJCWNpbiA+PiBhID4+IGIgPj4gYzsKCQlhLS07IGItLTsKCQlhZGpbYV0ucHVzaF9iYWNrKHtiLCBjfSk7CgkJYWRqW2JdLnB1c2hfYmFjayh7YSwgY30pOwoJfQoJYXV0byBkaWprc3RyYSA9IFsmXSh2ZWN0b3I8dmVjdG9yPHBpaT4gPiYgZywgaW50IGEpIHsKCQl0eXBlZGVmIHBhaXI8bGwsaW50PiBwb2ludDsKCQl2ZWN0b3I8bGw+IGRpc3QobiwgaW5mKTsKCQlwcmlvcml0eV9xdWV1ZTxwb2ludCwgdmVjdG9yPHBvaW50PiwgZ3JlYXRlcjxwb2ludD4gPiBwcTsKCQlkaXN0W2FdID0gMDsKCQlwcS5wdXNoKHswbGwsIGF9KTsKCQl3aGlsZSAobm90IHBxLmVtcHR5KCkpIHsKCQkJYXV0byBbZCwgY3VyXSA9IHBxLnRvcCgpOyBwcS5wb3AoKTsKCQkJaWYgKGQgIT0gZGlzdFtjdXJdKSBjb250aW51ZTsKCQkJZm9yIChhdXRvIFtueHQsIHddIDogZ1tjdXJdKSB7CgkJCQlpZiAoc2V0bWluKGRpc3Rbbnh0XSwgZCArIHcpKSB7CgkJCQkJcHEucHVzaCh7ZGlzdFtueHRdLCBueHR9KTsKCQkJCX0KCQkJfQoJCX0KCQlyZXR1cm4gZGlzdDsKCX07CglhdXRvIGRpc3RTID0gZGlqa3N0cmEoYWRqLCBzKTsKCWF1dG8gZGlzdFQgPSBkaWprc3RyYShhZGosIHQpOwoJYXV0byBkaXN0VSA9IGRpamtzdHJhKGFkaiwgdSk7CglhdXRvIGRpc3RWID0gZGlqa3N0cmEoYWRqLCB2KTsKCWF1dG8gc29ydGVkT3JkZXIgPSBbJl0oY29uc3QgdmVjdG9yPGxsPiYgdikgewoJCXZlY3RvcjxpbnQ+IG9yZGVyKHYuc2l6ZSgpKTsKCQlpb3RhKG9yZGVyLmJlZ2luKCksIG9yZGVyLmVuZCgpLCAwKTsKCQlzb3J0KG9yZGVyLmJlZ2luKCksIG9yZGVyLmVuZCgpLCBbJl0oaW50IGEsIGludCBiKSB7IHJldHVybiB2W2FdIDwgdltiXTsgfSk7CgkJcmV0dXJuIG9yZGVyOwoJfTsKCWxsIHRvdERpc3QgPSBkaXN0U1t0XTsKCWxsIGFucyA9IGluZjsKCXsKCQlhdXRvIG9yZFMgPSBzb3J0ZWRPcmRlcihkaXN0Uyk7CgkJYXV0byBkcCA9IGRpc3RVOwoJCWZvciAoaW50IGEgOiBvcmRTKSB7CgkJCWZvciAoYXV0byYmIFtiLCB3XSA6IGFkalthXSkgewoJCQkJaWYgKGRpc3RTW2FdICsgdyArIGRpc3RUW2JdID09IHRvdERpc3QpIHsKCQkJCQlzZXRtaW4oZHBbYl0sIGRwW2FdKTsKCQkJCX0KCQkJfQoJCX0KCQlmb3IgKGludCBpID0gMDsgaSA8IG47IGkrKykgewoJCQlzZXRtaW4oYW5zLCBkaXN0VltpXSArIGRwW2ldKTsKCQl9Cgl9Cgl7CgkJYXV0byBvcmRUID0gc29ydGVkT3JkZXIoZGlzdFQpOwoJCWF1dG8gZHAgPSBkaXN0VTsKCQlmb3IgKGludCBhIDogb3JkVCkgewoJCQlmb3IgKGF1dG8mJiBbYiwgd10gOiBhZGpbYV0pIHsKCQkJCWlmIChkaXN0VFthXSArIHcgKyBkaXN0U1tiXSA9PSB0b3REaXN0KSB7CgkJCQkJc2V0bWluKGRwW2JdLCBkcFthXSk7CgkJCQl9CgkJCX0KCQl9CgkJZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspIHsKCQkJc2V0bWluKGFucywgZGlzdFZbaV0gKyBkcFtpXSk7CgkJfQoJfQoJY291dCA8PCBhbnMgPDwgZW5kbDsKfQ==