#include<bits/stdc++.h>
using namespace std;
int main(){
int n;
int p;
int book[n+1];
int dst[n+1];
scanf("%d",&n);
scanf("%d",&p);
int mp[n+1][n+1];
for(int i=0;i<n+1;i++)
for(int j=0;j<n+1;j++)
{
mp[i][j]=999999999;
}
for(int i=0;i<p;i++)
{
int a,b,c;
cin>>a;
cin>>b;
cin>>c;
mp[a][b]=c;
}
int u;/***离源点最近的点***/
int minx;
for(int i=1;i<=n;i++) dst[i]=mp[1][i];
for(int i=1;i<=n;i++) book[i]=0;
book[1]=1;
for(int i=1;i<=n;i++){
minx=999999999;
for(int j=1;j<=n;j++){
if(book[j]==0&&dst[j]<minx){
minx=dst[j];
u=j;
}
}
book[u]=1;
/***更新最短路径数组***/
for(int k=1;k<=n;k++){
if(book[k]==0&&dst[k]>dst[u]+mp[u][k]&&mp[u][k]<999999999){
dst[k]=dst[u]+mp[u][k];
}
}
}
int max=0;
for(int i=1;i<=n;i++)
{
if(dst[i]>max&&dst[i]!=999999999)
max=dst[i];
}
cout<<max<<endl;
}