#include <bits/stdc++.h>
using namespace std;
const int N=1010,M=100010;
int p[N];
int n,m;
struct road
{
int st;
int ed;
int dist;
bool operator <(const road &W)const
{
return dist<W.dist;
}
}road[N];
int find(int x)
{
if(x!=p[x]) p[x]=find(p[x]);
return p[x];
}
bool check()
{
int f=find(1);
for(int i=1;i<=n;i++)
{
if(find(i)!=f) return false;
}
return true;
}
void Merge(int x,int y)
{
int a=find(x);
int b=find(y);
p[a]=b;
}
int main()
{
cin>>n>>m;
for(int i=1;i<=n;i++) p[i]=i;
for(int i=1;i<=m;i++)
cin>>road[i].st>>road[i].ed>>road[i].dist;
sort(road+1,road+m+1);
int res=-1;
for(int i=1;i<=m;i++)
{
Merge(road[i].ed,road[i].st);
if(check())
{
res=road[i].dist;
break;
}
}
cout<<res;
return 0;
}