#include <stdio.h>
#define maxn 1000
#define maxm 100000
typedef struct node //路径节点
{
int x, y, t;
}node;
node road[maxm]; //路径
int f[1005]; //村庄
int find(int x)
{
return (f[x]==x)?x:(f[x]=find(f[x]));
}
void sort(int m) //根据t,对road从小到大进行排列
{
int i, j, min;
node k;
for(i=0;i<m;i++)
{
min=i;
for(j=i+1;j<m;j++)
{
if(road[min].t>road[j].t)
{
min=j;
}
}
if(min!=i)
{
k=road[i];
road[i]=road[min];
road[min]=k;
}
}
}
void Create(int n, int m)
{
int i, j;
for(int i=1;i<=n;i++) //村庄初始化,从1开始,f【0】无效
{
f[i]=i;
}
for(i=0;i<m;i++)
{
scanf("%d%d%d",&road[i].x,&road[i].y,&road[i].t);
}
sort(m);
}
void main()
{
int n, m;
scanf("%d%d",&n,&m);
Create(n, m);
int t_min=0,c=0;
for (int i=0;i<m;i++)
{
int p1;
int p2;
p1=road[i].x;
p2=road[i].y;
int f1;
int f2;
f1=find(p1);
f2=find(p2);
if(f1!=f2)
{
c++;
t_min=road[i].t;
f[f1]=f2;
}
}
if (c!=n-1)
printf("-1");
else
printf("%d",t_min);
return 0;
}