卒
#include <bits/stdc++.h>
#define int long long
using namespace std;
int n, m, s, t, h[20001], c, ans = 1e9;
struct Egde{int nxt, dis, to;}e[10001];
bool vis[20001];
void dfs (int d, int mx)
{
if (mx >= ans)return;
if (d == t)
{
ans = mx;
return;
}
for (int i = h[d]; i != 0; i = e[i].nxt)if (! vis[e[i].to])dfs (e[i].to, max (mx, e[i].dis));
}
void add (int from, int to, int dis)
{
e[++ c].nxt = h[from];
e[c].dis = dis;
e[c].to = to;
h[from] = c;
}
signed main()
{
scanf ("%d %d %d %d", &n, &m, &s, &t);
for (int i = 0; i < m; ++ i)
{
int u, v, d;
scanf ("%d %d %d", &u, &v, &d);
add (u, v, d);
add (v, u, d);
}
dfs (s, 0);
printf ("%d", ans);
return 0;
}