#include<bits/stdc++.h>
using namespace std;
int a[5010][5010],w[5010][5010],cd[5010],rd[5010],sd,zd,topo[5010],t,ve[5010],vl[5010],e[5010],l[5010],b[5010][5010],path[5010],cd2[5010],ans;
stack <int> s;
int n,m;
void jinatu(){
cin>>n>>m;
for(int i=1;i<=m;i++){
int u,v,q;
cin>>u>>v>>q;
cd[u]++;
rd[v]++;
a[u][cd[u]]=v;
w[u][v]=q;
}
for(int i=1;i<=n;i++){
if(rd[i]==0){
sd=i;
}
if(cd[i]==0){
zd=i;
}
}
}
bool topo2(){
int num=0;
s.push(sd);
while(!s.empty()){
int i=s.top();
s.pop();
num++;
topo[++t]=i;
for(int j=1;j<=cd[i];j++){
int k=a[i][j];
rd[k]--;
ve[k]=max(ve[k],ve[i]+w[i][k]);
if(rd[k]==0){
s.push(k);
}
}
}
if(num==n){
return true;
}else{
return false;
}
}
void guanjianlujing(){
if(topo2()){
for(int i=1;i<=n;i++){
vl[i]=ve[zd];
}
for(int i=n;i>=1;i--){
int k=topo[i];
for(int j=cd[k];j>=1;j--){
int h=a[k][j];
vl[k]=min(vl[k],vl[h]-w[k][h]);
}
}
}
int j=0;
for(int i=1;i<=n;i++){
for(int k=1;k<=cd[i];k++){
int h=a[i][k];
e[++j]=ve[i];
l[j]=vl[h]-w[i][h];
if(e[j]==l[j]){
b[i][++cd2[i]]=k;
ans+=w[i][h];
}
}
}
}
int main(){
jinatu();
guanjianlujing();
cout<<ans<<" ";
return 0;
}