#include<bits/stdc++.h>
using namespace std;
const int N=2e4+100;
const int M=2e5+100;
int h[N],v[M],ne[M],e[M],idx;
int n,m;
int color[N];
void add(int a,int b,int c){
v[idx]=c,e[idx]=b,ne[idx]=h[a],h[a]=idx++;
}
bool dfs(int u,int col,int rr){
color[u]=col;
for(int i=h[u];i!=-1;i=ne[i]){
int j=e[i];
if(v[i]<=rr) continue;
if(color[j]){
if(color[j]==color[u]) return false;
}
else{
if(!dfs(j,3-col,rr)) return false;
}
}
return true;
}
bool check(int x){
memset(color,0,sizeof color);
for(int i=1;i<=n;i++){
if(color[i]==0)
if(!dfs(i,1,x)) return false;
}
return true;
}
int main(){
memset(h,-1,sizeof h);
scanf("%d%d",&n,&m);
int l=0,r=0;
for(int i=0;i<m;i++){
int a,b,c;scanf("%d%d%d",&a,&b,&c);
add(a,b,c);
add(b,a,c);
r=max(r,c);
}
while(l<r){
int mid=l+r>>1;
if(check(mid)) r=mid;
else l=mid+1;
}
printf("%d\n",r);
return 0;
}