#include<bits/stdc++.h>
using namespace std;
int n,m;
int f[1005];
struct node{
int x,y,t;
}mp[100005];
int cmp(node x,node y){
return x.t<y.t;
}
int find(int x){
if(f[x]==x) return x;
else return find(f[x]);
}
bool jc(){
int k=find(1);
if(k==1) return 0;
for(int i=2;i<=n;i++)
if(find(i)!=k) return 0;
return 1;
}
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++) f[i]=i;
int nt=n;
for(int i=1;i<=m;i++)
cin>>mp[i].x>>mp[i].y>>mp[i].t;
sort(mp+1,mp+1+m,cmp);
int T=mp[1].t;
for(int i=1;i<=m;i++){
if(mp[i].t!=T)
if(jc()){
cout<<T;
return 0;
}
else T=mp[i].t;
int u,w;
u=find(mp[i].x);
w=find(mp[i].y);
if(u!=w) f[u]=w;
}
cout<<-1;
return 0;
}