#include<stdio.h>
#define MAX 200
#define INF (1<<26)
#define min(x,y) ((x)<(y)?(x):(y))
int n,m,s,g1,g2,a,b,c;
int t[MAX][MAX];
void init(){
    for(int i=0;i<MAX;i++){
        for(int j=0;j<MAX;j++){
            t[i][j]=(i==j?0:INF);
        }
    }
}
int main(void){
    while(1){
        scanf("%d%d%d%d%d",&n,&m,&s,&g1,&g2);
        if(n==0) break;
        s--,g1--,g2--;
        init();
        for(int i=0;i<m;i++){
            scanf("%d%d%d",&a,&b,&c);
            a--,b--;
            t[a][b]=c;
        }
        for(int k=0;k<n;k++){
            for(int i=0;i<n;i++){
                for(int j=0;j<n;j++){
                    t[i][j]=min(t[i][j],t[i][k]+t[k][j]);
                }
            }
        }
        int ans=INF;
        for(int i=0;i<n;i++)
            ans=min(ans,t[s][i]+t[i][g1]+t[i][g2]);
        printf("%d\n",ans);
    }
}

