#include<iostream>
#include<cmath>
#include<cstring>
#include<vector>
using namespace std;
int n,m,x,y,z,s,t,a[2502][2502],dis[2502],siz,pos,vst;
bool v[2502];
vector<int> q[2503];
void dijkstra(){
memset(dis,0x3f,sizeof(dis));
memset(v,false,sizeof(v));
dis[pos]=2e9;dis[s]=0;vst=n;
while(vst>0){
pos=0;
for(int j=1;j<=n;++j)
if((!v[j])&&dis[pos]>dis[j]) pos=j;
v[pos]=true;
--vst;
siz=q[pos].size();
for(int j=0;j<siz;++j)
dis[q[pos][j]]=min(dis[q[pos][j]],max(dis[pos],a[pos][q[pos][j]]));
}
}
int main(){
memset(a,0x3f,sizeof(a));
cin>>n>>m>>s>>t;
for(int i=1;i<=m;++i){
cin>>x>>y>>z;
a[x][y]=a[y][x]=min(a[x][y],z);
q[x].push_back(y);
q[y].push_back(x);
}
dijkstra();
cout<<dis[t]<<endl;
return 0;
}
求各位大佬指点Q_Q|||