#define minupd(v,x)((x)<v?v=(x):0)
D[101][101],b1,b2,c,i,j,k,t,ans;
main(n,m,s,g1,g2){
	for(;scanf("%d%d%d%d%d",&n,&m,&s,&g1,&g2)*n;){
		memset(D,1,sizeof(D));
		for(;m--;){
			scanf("%d%d%d",&b1,&b2,&c);
			D[b1][b2]=c;
		}
		for(k=n;k;k--)
			for(i=n;i;i--)
				for(j=n;j;j--)
					minupd(D[i][j],D[i][k]+D[k][j]);
		ans=1e9;
		for(i=n;i;i--)
			minupd(ans,D[s][i]+D[i][g1]+D[i][g2]);
		printf("%d\n",ans);
	}
}