#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N=1e6+10;
int n,m,fa[N];
struct road{
int x,y,t;
}aa[N];
bool cmp(road a,road b){
return a.t<b.t;
}
int find(int a){
if(fa[a]==a) return a;
return fa[a]=find(fa[a]);
}
void merge(int a,int b){
int fx=find(a),fy=find(b);
fa[fx]=fy;
n--;
}
signed main(){
cin>>n>>m;
for(int i=1;i<=m;i++){
cin>>aa[i].x>>aa[i].y>>aa[i].t;
}
for(int i=1;i<=n;i++){
fa[i]=i;
}
sort(aa+1,aa+1+m,cmp);
for(int i=1;i<=m;i++){
merge(aa[i].x,aa[i].y);
if(n==1){
cout<<aa[i].t;
return 0;
}
}
cout<<-1;
return 0;
}