#include <bits/stdc++.h>
using namespace std;
int n,m,s,t,w[20005],ans=2140000000,sum[20005],ans_sum=2140000000;
struct node
{
int w,id;
};
vector <node> v[20005];
bool flag[20005];
void dfs (int cnt,int x,int summ)
{
if (x==t)
{
int maxx=-1;
for (int i=1;i<=cnt;i++)
{
maxx=max (maxx,sum[i]);
}
if (maxx<ans&&summ<ans_sum)
{
ans=maxx;
}
return;
}
for (int i=0;i<v[x].size();i++)
{
if (!flag[v[x][i].id])
{
sum[cnt]=v[x][i].w;
summ=summ+v[x][i].w;
cnt++;
flag[v[x][i].id]=true;
dfs (cnt,v[x][i].id,summ);
flag[v[x][i].id]=false;
summ=summ-v[x][i].w;
cnt--;
}
}
}
int main()
{
cin>>n>>m>>s>>t;
for (int i=1;i<=m;i++)
{
int u,vt,wt;
cin>>u>>vt>>wt;
v[u].push_back (node {wt,vt});
v[vt].push_back (node {wt,u});
}
flag[s]=true;
dfs (1,s,0);
cout<<ans<<endl;
return 0;
}