#include <bits/stdc++.h>
using namespace std;
int n,m,s,t,ans = 0;
int sset[10005] = {};
struct Node
{
int from;
int to;
int w;
}node[20005];
bool cmp(Node tmp1,Node tmp2)
{
return tmp1.w < tmp2.w;
}
int find(int u)
{
int r = u;
while(r != sset[r]) r = sset[r];
int i = u, j;
while (sset[u] != r)
{
j = sset[u];
sset[u] = r;
u = j;
}
}
int main()
{
scanf("%d%d%d%d",&n,&m,&s,&t);
for (int i = 1; i <= n; i++)
{
sset[i] = i;
}
for (int i = 1; i <= m; i++)
{
scanf("%d%d%d",&node[i].from,&node[i].to,&node[i].w);
}
sort(node+1,node+1+m,cmp);
for (int i = 1; i <= m; i++)
{
int x,y;
x = find(node[i].from);
y = find(node[i].to);
if (x != y)
{
sset[x] = y;
ans = node[i].w;
}
if(find(s) == find(t)) break;
}
printf("%d",ans);
return 0;
}