#include<bits/stdc++.h>
using namespace std;#definedbdouble#definelllonglong#definePirpair<int,int>#definefifirst#definesesecond#definepbpush_back#definem_pmake_pair#defineinf0x3f3f3f3f#defineINF0x3f3f3f3f3f3f3f3f/*==========ACMer===========*/constint N =105, M =405;int n, m;structEdge{
int v, w, ne;} e[M];int h[N], tot;voidadd(int u,int v,int w){
e[++ tot]={
v, w, h[u]}; h[u]= tot;}int dis[N], vis[N];voidspfa(){
memset(dis, inf,sizeof dis);
dis[1]=0;
queue<int> q;
q.push(1);while(q.size()){
int u = q.front(); q.pop();
vis[u]=0;for(int i = h[u]; i; i = e[i].ne){
int v = e[i].v, w = e[i].w;if(dis[v]> dis[u]+ w){
dis[v]= dis[u]+ w;if(! vis[v])//这个 if 不能和上个 if 放到一个 if 语句中去{
q.push(v);
vis[v]=1;}}}}}intmain(){
scanf("%d %d",&n,&m);int u, v, w;for(int i =0; i < m; i ++){
scanf("%d %d %d",&u,&v,&w);add(u, v, w);add(v, u, w);}spfa();int mx =0;for(int i =1; i <= n; i ++)
mx =max(mx, dis[i]);if(mx == inf) mx =-1;printf("%d\n", mx);return0;}