#include<iostream>
#include<algorithm>
using namespace std;
struct t{
int x;
int y;
int time;
}a[100001];
int tf[10001];
int n,m;
bool cmp(t u,t v){
return u.time<v.time;
}
int grandpa(int v){
if(tf[v]==v)return v;
return grandpa(tf[v]);
}
void hb(int u,int v){
int tu=grandpa(u);
int tv=grandpa(v);
tf[tu]=tv;
}
bool add(){
int temp=0;
for(int i=0;i<m;i++){
if(tf[i]==i)temp++;
if(temp>1)return false;
}
return true;
}
int main(){
cin>>n>>m;
for(int i=0;i<m;i++)cin>>a[i].x>>a[i].y>>a[i].time;
for(int i=0;i<n;i++)tf[i]=i;
sort(a,a+m,cmp);
for(int i=0;i<m;i++){
if(add()){
cout<<a[i-1].time<<endl;
return 0;
}
hb(a[i].x,a[i].y);
}
cout<<-1<<endl;
return 0;
}