\begin{problem}{Distance 1, 2, 3. Расстояние между вершинами}{distance.in}{distance.out}{2 секунды}

\begin{flushright}
\parbox{0.2\textwidth}{
Коль Дейкстр\'у писать без кучи,\\
То тайм-лимит ты получишь...\\
А в совсем крутой задаче\\
Юзай кучу Фибоначчи!
\begin{flushright}\vspace{-0.2cm}
{\tiny \sl Спектакль преподавателей ЛКШ.июль--2007}
\end{flushright}%
}%
\end{flushright}

Дан взвешенный граф. Требуется найти вес минимального пути между двумя вершинами.

\InputFile

Первая строка входного файла содержит два натуральных числа $n$ и $m$ --- 
количество вершин и ребер графа соответственно. Вторая строка входного файла 
содержит натуральные числа $s$ и $t$ --- номера вершин, длину пути между 
которыми требуется найти ($1 \le s, t \le n$, $s \ne t$).

Следующие $m$ строк содержат описание ребер по одному на строке. Ребро номер 
$i$ описывается тремя натуральными числами $b_i$, $e_i$ и $w_i$ --- номера 
концов ребра и его вес соответственно ($1 \le b_i, e_i \le n$, $0 \le w_i \le 100\,000$).

\Variants

Distance1: $n \le 1\,000$, $m \le 10\,000$.

Distance2: $n \le 5\,000$, $m \le 100\,000$.

Distance3: $n \le 100\,000$, $m \le 200\,000$.

\OutputFile

Первая строка выходного файла должна содержать одно натуральное число --- 
вес минимального пути между вершинами $s$ и $t$.

Если путь из $s$ в $t$ не существует, выведите \texttt{-1}.

\Example

\begin{example}
\exmp{
4 4
1 3
1 2 1
3 4 5
3 2 2
4 1 4
}{
3
}%
\end{example}

\end{problem}
