#include<bits/stdc++.h>
#define ll long long
#define vi vector<int>
#define vl vector<ll>
#define pl pair<ll,ll>
#define pi pair<int,int>
#define all(v) v.begin(),v.end()
#define pb push_back
#define task "tunnel"
#define TIME (1.0*clock()/CLOCKS_PER_SEC)
using namespace std;
int n,m;
int a,b,c,d;
ll da[500505];
ll db[500505];
ll dc[500505];
ll dd[500505];
vector<pi> adj[500505];
vi dag[500505];
vi rev[500505];
struct edges{
int fi,se,wei;
} e[500505];
void dijk(int u,ll d[])
{
priority_queue<pl,vector<pl>,greater<pl>>pq;
pq.push({0,u});
for(int i=1;i<=n;i++)
{
d[i]=1e18;
}
d[u]=0;
while(!pq.empty())
{
ll dist=pq.top().first;
int v=pq.top().second;
pq.pop();
if(dist>d[v])continue;
for(auto &k:adj[v])
{
int x=k.first;
ll w=k.second;
if(d[x]>d[v]+w)d[x]=d[v]+w,pq.push({d[x],x});
}
}
}
bool chosenone[500505];
int deg[500505];
int rdeg[500505];
ll fc[500505];
ll fd[500505];
void sol()
{
cin>>n>>m;
cin>>a>>b>>c>>d;
for(int i=1;i<=m;i++){
int u,v,w;
cin>>u>>v>>w;
e[i]={u,v,w};
adj[u].pb({v,w});
adj[v].pb({u,w});
}
dijk(a,da);
dijk(b,db);
dijk(c,dc);
dijk(d,dd);
for(int i=1;i<=m;i++)
{
int u=e[i].fi;
int v=e[i].se;
int w=e[i].wei;
if(da[u]+w==da[v]
&& da[u]+w+db[v]==da[b])
{
dag[u].pb(v);
rev[v].pb(u);
deg[v]++;
rdeg[u]++;
chosenone[u]=1;
chosenone[v]=1;
}
if(da[v]+w==da[u]
&& da[v]+w+db[u]==da[b])
{
dag[v].pb(u);
rev[u].pb(v);
deg[u]++;
rdeg[v]++;
chosenone[u]=1;
chosenone[v]=1;
}
}
queue<int>q,q2;
ll ans=dc[d];
for(int i=1;i<=n;i++)
{
fc[i]=dc[i];
fd[i]=dd[i];
if(chosenone[i]){
// cout<<fc[i]<<" "<<fd[i]<<" "<<i<<"\n";
}
}
q.push(a);q2.push(b);
while(!q.empty())
{
int t=q.front();
q.pop();ans=min(fc[t]+dd[t],ans);
cout<<fc[t]<<" "<<dd[t]<<" "<<t<<" "<<ans<<"\n";
for(auto &x:dag[t])
{
fc[x]=min(fc[x],fc[t]);
if(--deg[x]==0)q.push(x);
}
}
while(!q2.empty())
{
int t=q2.front();
q2.pop();ans=min(fd[t]+dc[t],ans);
for(auto &x:rev[t])
{
fd[x]=min(fd[x],fd[t]);
if(--rdeg[x]==0)q2.push(x);
}
}
cerr<<ans<<"\n";
}
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
if(fopen(task".inp","r"))
{
freopen(task ".inp","r",stdin);
freopen(task ".out","w",stdout);
}
sol();
cerr<<"Time : "<<TIME<<"s"<<"\n";
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KI2RlZmluZSBsbCBsb25nIGxvbmcKI2RlZmluZSB2aSB2ZWN0b3I8aW50PgojZGVmaW5lIHZsIHZlY3RvcjxsbD4KI2RlZmluZSBwbCBwYWlyPGxsLGxsPgojZGVmaW5lIHBpIHBhaXI8aW50LGludD4KI2RlZmluZSBhbGwodikgdi5iZWdpbigpLHYuZW5kKCkKI2RlZmluZSBwYiBwdXNoX2JhY2sKI2RlZmluZSB0YXNrICJ0dW5uZWwiCiNkZWZpbmUgVElNRSAoMS4wKmNsb2NrKCkvQ0xPQ0tTX1BFUl9TRUMpCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CmludCBuLG07CmludCBhLGIsYyxkOwpsbCBkYVs1MDA1MDVdOwpsbCBkYls1MDA1MDVdOwpsbCBkY1s1MDA1MDVdOwpsbCBkZFs1MDA1MDVdOwp2ZWN0b3I8cGk+IGFkals1MDA1MDVdOwp2aSBkYWdbNTAwNTA1XTsKdmkgcmV2WzUwMDUwNV07CnN0cnVjdCBlZGdlc3sKCWludCBmaSxzZSx3ZWk7Cn0gZVs1MDA1MDVdOwp2b2lkIGRpamsoaW50IHUsbGwgZFtdKQp7Cglwcmlvcml0eV9xdWV1ZTxwbCx2ZWN0b3I8cGw+LGdyZWF0ZXI8cGw+PnBxOwoJcHEucHVzaCh7MCx1fSk7Cglmb3IoaW50IGk9MTtpPD1uO2krKykKCXsKCQlkW2ldPTFlMTg7Cgl9CglkW3VdPTA7Cgl3aGlsZSghcHEuZW1wdHkoKSkKCXsKCQlsbCBkaXN0PXBxLnRvcCgpLmZpcnN0OwoJCWludCB2PXBxLnRvcCgpLnNlY29uZDsKCQlwcS5wb3AoKTsKCQlpZihkaXN0PmRbdl0pY29udGludWU7CgkJZm9yKGF1dG8gJms6YWRqW3ZdKQoJCXsKCQkJaW50IHg9ay5maXJzdDsKCQkJbGwgdz1rLnNlY29uZDsKCQkJaWYoZFt4XT5kW3ZdK3cpZFt4XT1kW3ZdK3cscHEucHVzaCh7ZFt4XSx4fSk7CgkJfQoJfQp9CmJvb2wgY2hvc2Vub25lWzUwMDUwNV07CmludCBkZWdbNTAwNTA1XTsKaW50IHJkZWdbNTAwNTA1XTsKbGwgZmNbNTAwNTA1XTsKbGwgZmRbNTAwNTA1XTsKdm9pZCBzb2woKQp7CgljaW4+Pm4+Pm07CgljaW4+PmE+PmI+PmM+PmQ7Cglmb3IoaW50IGk9MTtpPD1tO2krKyl7CgkJaW50IHUsdix3OwoJCWNpbj4+dT4+dj4+dzsKCQllW2ldPXt1LHYsd307CgkJYWRqW3VdLnBiKHt2LHd9KTsKCQlhZGpbdl0ucGIoe3Usd30pOwoJfSAgICAKCWRpamsoYSxkYSk7CglkaWprKGIsZGIpOwoJZGlqayhjLGRjKTsKCWRpamsoZCxkZCk7Cglmb3IoaW50IGk9MTtpPD1tO2krKykKCXsKCQlpbnQgdT1lW2ldLmZpOwoJCWludCB2PWVbaV0uc2U7CgkJaW50IHc9ZVtpXS53ZWk7CgkJaWYoZGFbdV0rdz09ZGFbdl0KJiYgZGFbdV0rdytkYlt2XT09ZGFbYl0pCgkJewoJCQlkYWdbdV0ucGIodik7CgkJCXJldlt2XS5wYih1KTsKCQkJZGVnW3ZdKys7CgkJCXJkZWdbdV0rKzsKCQkJY2hvc2Vub25lW3VdPTE7CgkJCWNob3Nlbm9uZVt2XT0xOwoJCX0KCQlpZihkYVt2XSt3PT1kYVt1XQomJiBkYVt2XSt3K2RiW3VdPT1kYVtiXSkKCQl7CgkJCWRhZ1t2XS5wYih1KTsKCQkJcmV2W3VdLnBiKHYpOwoJCQlkZWdbdV0rKzsKCQkJcmRlZ1t2XSsrOwoJCQljaG9zZW5vbmVbdV09MTsKCQkJY2hvc2Vub25lW3ZdPTE7CgkJfQoJfQoKCXF1ZXVlPGludD5xLHEyOwoJbGwgYW5zPWRjW2RdOwoJZm9yKGludCBpPTE7aTw9bjtpKyspCgl7CgkJZmNbaV09ZGNbaV07CgkJZmRbaV09ZGRbaV07CgkJCgkJaWYoY2hvc2Vub25lW2ldKXsKCQkJLy8gY291dDw8ZmNbaV08PCIgIjw8ZmRbaV08PCIgIjw8aTw8IlxuIjsKCQl9Cgl9CglxLnB1c2goYSk7cTIucHVzaChiKTsKCgl3aGlsZSghcS5lbXB0eSgpKQoJewoJCWludCB0PXEuZnJvbnQoKTsKCQlxLnBvcCgpO2Fucz1taW4oZmNbdF0rZGRbdF0sYW5zKTsKCQljb3V0PDxmY1t0XTw8IiAiPDxkZFt0XTw8IiAiPDx0PDwiICI8PGFuczw8IlxuIjsKCQlmb3IoYXV0byAmeDpkYWdbdF0pCgkJewoJCQlmY1t4XT1taW4oZmNbeF0sZmNbdF0pOwoJCQkKCQkJaWYoLS1kZWdbeF09PTApcS5wdXNoKHgpOwkJCgkJfQoKCX0KCXdoaWxlKCFxMi5lbXB0eSgpKQoJewoJCWludCB0PXEyLmZyb250KCk7CgkJcTIucG9wKCk7YW5zPW1pbihmZFt0XStkY1t0XSxhbnMpOwoJCQoJCQoJCWZvcihhdXRvICZ4OnJldlt0XSkKCQl7CgkJCWZkW3hdPW1pbihmZFt4XSxmZFt0XSk7CgkJCQoJCQlpZigtLXJkZWdbeF09PTApcTIucHVzaCh4KTsKCQl9CgoJfQoJY2Vycjw8YW5zPDwiXG4iOwoKfQppbnQgbWFpbigpCnsKICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oMCk7CiAgICBjaW4udGllKDApOwogICAgaWYoZm9wZW4odGFzayIuaW5wIiwiciIpKQogICAgewogICAgICAgIGZyZW9wZW4odGFzayAiLmlucCIsInIiLHN0ZGluKTsKICAgICAgICBmcmVvcGVuKHRhc2sgIi5vdXQiLCJ3IixzdGRvdXQpOwogICAgfQogICAgc29sKCk7CiAgICBjZXJyPDwiVGltZSA6ICI8PFRJTUU8PCJzIjw8IlxuIjsKICAgIHJldHVybiAwOwp9