#include #include int table[200][200]; int main(){ while(true){ int n, m, base, a, b; std::cin >> n >> m >> base >> a >> b; if(n == 0){ break; } base--; a--; b--; const int infinity = 1 << 28; std::fill(&table[0][0], &table[n - 1][n - 1] + 1, infinity); for(int i = 0; i < n; i++){table[i][i] = 0;} for(int i = 0; i < m; i++){ int x, y, c; std::cin >> x >> y >> c; x--; y--; table[x][y] = c; } for(int k = 0; k < n; k++){ for(int i = 0; i < n; i++){ for(int j = 0; j < n; j++){ table[i][j] = std::min(table[i][j], table[i][k] + table[k][j]); } } } int M = infinity; for(int i = 0; i < n; i++){ M = std::min(M, table[base][i] + table[i][a] + table[i][b]); } std::cout << M << std::endl; } }