#include<bits/stdc++.h>using namespace std;int l=0x3f3f3f3f,r=0;int s,t;struct ty{ int x,w; };int n,m;vector<ty> g[10010];int vis[10000];queue<int>q;int isleft(int a){for(int i=1;i<=n;i++) vis[i]=0; q=queue<int>(); q.push(s); while(q.size()){ int x=q.front(); q.pop(); if(x==t){ return 0;} if(vis[x]) continue; vis[x]=1; for(auto tt:g[x]){ if(tt.w>a) continue; q.push(tt.x);}} return 1;}int main(){ scanf(&quot;%d%d&quot;,&amp;n,&amp;m); for(int i=1;i<=m;i++){ int u,v,w; scanf(&quot;%d%d%d&quot;,&amp;u,&amp;v,&amp;w); g[u].push_back({v,w}); g[v].push_back({u,w}); l=min(l,w); r=max(r,w); } l-=1,r+=1; scanf(&quot;%d%d&quot;,&amp;s,&amp;t); while(l+1<r){ int mid=l+(r-l)/2; if(isleft(mid)) l=mid; else r=mid; } cout<<r;}