#include <stdio.h>
#include <algorithm>
using namespace std;
int pre[1010];
int N,M,X,Y,j,tmax=100010;
int find(int x)
{
if(pre[x]==x)
return x;
if(pre[x]!=x)
pre[x]=find(pre[x]);
return pre[x];
}
void join(int x,int y)
{
int p1=find(x),p2=find(y);
if(p1!=p2)
pre[p1]=p2;
}
struct A
{
int x,y,t;
}a[100010];
bool cmp(A c,A b)
{
return c.t>b.t;
}
int main()
{
//freopen("in.txt","r",stdin);
cin>>N>>M;
for(int i=1;i<=M;i++)
{
cin>>a[i].x>>a[i].y>>a[i].t;
}
for(int i=1;i<=N;i++)
pre[i]=i;
sort(a+1,a+M+1,cmp);
for(int i=1;i<=M;i++)
{ int f=0;
for( j=i;j<=M;j++)
{
join(pre[a[j].x],pre[a[j].y]);
}
for(int m=1;m<=N;m++)
{
if(pre[m]==m)
f++;
}
if(f==1)
tmax=a[i].t;
if(j==1&&f!=1)
{cout<<-1<<endl;return 0;}
if(f!=1)
break;
for(int i1=1;i1<=N;i1++)
pre[i1]=i1;
}
cout<<tmax<<endl;
return 0;
}