using System;
using System.Collections;
using System.Collections.Generic;
namespace Desvio
{
class Program
{
static int n, m, c, k;
static int[,] grafo = new int[1010, 1010];
static int[] custo = new int[1010];
static int inf = 99999;
static Queue<int> fila = new Queue<int>();
static int dijkstra(int origem, int destino)
{
custo[origem] = 0;
fila.Enqueue(origem);
while(fila.Count != 0)
{
int i = fila.Dequeue();
for(int j=0; j < n; j++)
{
if(grafo[i,j] != inf && custo[j] > custo[i] + grafo[i,j])
{
custo[j] = custo[i] + grafo[i, j];
fila.Enqueue(j);
}
}
}
return custo[destino];
}
static void Main(string[] args)
{
do
{
string entrada = Console.ReadLine();
n = int.Parse(entrada.Split(' ')[0]);
m = int.Parse(entrada.Split(' ')[1]);
c = int.Parse(entrada.Split(' ')[2]);
k = int.Parse(entrada.Split(' ')[3]);
if (n != 0 && m != 0 && c != 0 && k != 0)
{
for (int i = 0; i <= n; i++)
{
custo[i] = inf;
for (int j = 0; j <= n; j++)
{
grafo[i, j] = inf;
}
}
for (int i = 1; i <= m; i++)
{
int u, v, p;
string entradaAresta = Console.ReadLine();
u = int.Parse(entradaAresta.Split(' ')[0]);
v = int.Parse(entradaAresta.Split(' ')[1]);
p = int.Parse(entradaAresta.Split(' ')[2]);
if (u >= c && v >= c)
{
grafo[u, v] = p;
grafo[v, u] = p;
}
if (u >= c && v < c)
{
grafo[u, v] = p;
}
if (u < c && v >= c)
{
grafo[v, u] = p;
}
if (u < c && v < c && Math.Abs(u - v) == 1)
{
grafo[u, v] = p;
grafo[v, u] = p;
}
}
int resultado = dijkstra(k, c - 1);
Console.WriteLine(resultado);
}
} while (n != 0 && m != 0 && c != 0 && k != 0);
//Console.ReadKey();
}
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnM7CnVzaW5nIFN5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljOwoKbmFtZXNwYWNlIERlc3Zpbwp7CiAgICBjbGFzcyBQcm9ncmFtCiAgICB7CiAgICAgICAgc3RhdGljIGludCBuLCBtLCBjLCBrOwogICAgICAgIHN0YXRpYyBpbnRbLF0gZ3JhZm8gPSBuZXcgaW50WzEwMTAsIDEwMTBdOwogICAgICAgIHN0YXRpYyBpbnRbXSBjdXN0byA9IG5ldyBpbnRbMTAxMF07CiAgICAgICAgc3RhdGljIGludCBpbmYgPSA5OTk5OTsKICAgICAgICBzdGF0aWMgUXVldWU8aW50PiBmaWxhID0gbmV3IFF1ZXVlPGludD4oKTsKCiAgICAgICAgc3RhdGljIGludCBkaWprc3RyYShpbnQgb3JpZ2VtLCBpbnQgZGVzdGlubykKICAgICAgICB7CiAgICAgICAgICAgIGN1c3RvW29yaWdlbV0gPSAwOwogICAgICAgICAgICBmaWxhLkVucXVldWUob3JpZ2VtKTsKICAgICAgICAgICAgd2hpbGUoZmlsYS5Db3VudCAhPSAwKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpbnQgaSA9IGZpbGEuRGVxdWV1ZSgpOwogICAgICAgICAgICAgICAgZm9yKGludCBqPTA7IGogPCBuOyBqKyspCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWYoZ3JhZm9baSxqXSAhPSBpbmYgJiYgY3VzdG9bal0gPiBjdXN0b1tpXSArIGdyYWZvW2ksal0pCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBjdXN0b1tqXSA9IGN1c3RvW2ldICsgZ3JhZm9baSwgal07CiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGEuRW5xdWV1ZShqKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHJldHVybiBjdXN0b1tkZXN0aW5vXTsKICAgICAgICB9CgoKICAgICAgICBzdGF0aWMgdm9pZCBNYWluKHN0cmluZ1tdIGFyZ3MpCiAgICAgICAgewogICAgICAgICAgICBkbwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBzdHJpbmcgZW50cmFkYSA9IENvbnNvbGUuUmVhZExpbmUoKTsKICAgICAgICAgICAgICAgIG4gPSBpbnQuUGFyc2UoZW50cmFkYS5TcGxpdCgnICcpWzBdKTsKICAgICAgICAgICAgICAgIG0gPSBpbnQuUGFyc2UoZW50cmFkYS5TcGxpdCgnICcpWzFdKTsKICAgICAgICAgICAgICAgIGMgPSBpbnQuUGFyc2UoZW50cmFkYS5TcGxpdCgnICcpWzJdKTsKICAgICAgICAgICAgICAgIGsgPSBpbnQuUGFyc2UoZW50cmFkYS5TcGxpdCgnICcpWzNdKTsKCgogICAgICAgICAgICAgICAgaWYgKG4gIT0gMCAmJiBtICE9IDAgJiYgYyAhPSAwICYmIGsgIT0gMCkKICAgICAgICAgICAgICAgIHsKCgoKICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8PSBuOyBpKyspCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBjdXN0b1tpXSA9IGluZjsKCiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDw9IG47IGorKykKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JhZm9baSwgal0gPSBpbmY7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IG07IGkrKykKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIGludCB1LCB2LCBwOwogICAgICAgICAgICAgICAgICAgICAgICBzdHJpbmcgZW50cmFkYUFyZXN0YSA9IENvbnNvbGUuUmVhZExpbmUoKTsKICAgICAgICAgICAgICAgICAgICAgICAgdSA9IGludC5QYXJzZShlbnRyYWRhQXJlc3RhLlNwbGl0KCcgJylbMF0pOwogICAgICAgICAgICAgICAgICAgICAgICB2ID0gaW50LlBhcnNlKGVudHJhZGFBcmVzdGEuU3BsaXQoJyAnKVsxXSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHAgPSBpbnQuUGFyc2UoZW50cmFkYUFyZXN0YS5TcGxpdCgnICcpWzJdKTsKCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh1ID49IGMgJiYgdiA+PSBjKQogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmFmb1t1LCB2XSA9IHA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmFmb1t2LCB1XSA9IHA7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh1ID49IGMgJiYgdiA8IGMpCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyYWZvW3UsIHZdID0gcDsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHUgPCBjICYmIHYgPj0gYykKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JhZm9bdiwgdV0gPSBwOwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAodSA8IGMgJiYgdiA8IGMgJiYgTWF0aC5BYnModSAtIHYpID09IDEpCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyYWZvW3UsIHZdID0gcDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyYWZvW3YsIHVdID0gcDsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKCgogICAgICAgICAgICAgICAgICAgIH0KCgogICAgICAgICAgICAgICAgICAgIGludCByZXN1bHRhZG8gPSBkaWprc3RyYShrLCBjIC0gMSk7CiAgICAgICAgICAgICAgICAgICAgQ29uc29sZS5Xcml0ZUxpbmUocmVzdWx0YWRvKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSB3aGlsZSAobiAhPSAwICYmIG0gIT0gMCAmJiBjICE9IDAgJiYgayAhPSAwKTsKCiAgICAgICAgICAgIC8vQ29uc29sZS5SZWFkS2V5KCk7CiAgICAgICAgfQogICAgfQoKCn0=
NCA2IDMgMwowIDEgMTAKMSAyIDEwCjAgMiAxCjMgMCAxCjMgMSAxMAozIDIgMTAKNiA3IDIgNQo1IDIgMQoyIDEgMTAKMSAwIDEKMyAwIDIKMyA0IDIKMyA1IDMKNSA0IDIKNSA1IDIgNAowIDEgMQoxIDIgMgoyIDMgMwozIDQgNAo0IDAgNQowIDAgMCAw
4 6 3 3
0 1 10
1 2 10
0 2 1
3 0 1
3 1 10
3 2 10
6 7 2 5
5 2 1
2 1 10
1 0 1
3 0 2
3 4 2
3 5 3
5 4 2
5 5 2 4
0 1 1
1 2 2
2 3 3
3 4 4
4 0 5
0 0 0 0