#include<bits/stdc++.h>
using namespace std;
const int INF=1e86;
int sq1[1003][1003],sq2[1003][1003];
bool vis[1003];
int dis[1003],sum;
int n,m;
void dijkstra1(int o)
{
int k,minn;
for(int i=1;i<=n;i++) dis[i]=INF
dis[o]=0;
for(int i=1;i<=n;i++)
{
minn=INF;
for(int j=1;j<=n;j++)
{
if(!vis[j]&&minn>dis[j])
{
minn=dis[j];
k=j;
}
}
vis[k]=true;
for(int j=1;j<=n;j++)
{
if(sq1[k][j]>0&&!vis[j]&&dis[k]+sq1[k][j]<dis[j])
{
dis[j]=dis[k]+sq1[k][j];
}
}
}
}
void dijkstra2(int o)
{
int k,minn;
for(int i=1;i<=n;i++) dis[i]=INF;
dis[o]=0;
for(int i=1;i<=n;i++)
{
minn=INF;
for(int j=1;j<=n;j++)
{
if(!vis[j]&&minn>dis[j])
{
minn=dis[j];
k=j;
}
}
vis[k]=true;
for(int j=1;j<=n;j++)
{
if(sq2[k][j]>0&&!vis[j]&&dis[k]+sq2[k][j]<dis[j])
{
dis[j]=dis[k]+sq2[k][j];
}
}
}
}
int main()
{
cin>>n>>m;
for(int i=1;i<=m;i++)
{
int a,b,c;
cin>>a>>b>>c;
sq1[a][b]=c;
sq2[b][a]=c;
}
dijkstra1(1);
memset(vis,false,sizeof(vis));
for(int i=2;i<=n;i++)
{
sum+=dis[i];
}
memset(dis,0,sizeof(dis));
dijkstra2(1);
for(int i=2;i<=n;i++)
{
sum+=dis[i];
}
cout<<sum;
return 0;
}