#include<algorithm>
#include<iostream>
#include<iomanip>
#include<cstring>
#include<vector>
#include<cmath>
#include<stack>
#include<queue>
#include<map>
#include<set>
using namespace std;
struct edge{
int st,to,w;
}edges[1005];
int n,k,ans,cnt;
int fa[105];
bool cmp(edge a,edge b){
return a.w<b.w;
}
int find_(int gu){
if(fa[gu]==gu){
return gu;
}else{
return fa[gu]=find_(fa[gu]);
}
}
void add(int x,int y){
int xx=find_(x);
int yy=find_(y);
fa[xx]=yy;
}
int main(){
cin>>n>>k;
for(int i=1;i<=k;i++){
cin>>edges[i].st>>edges[i].to>>edges[i].w;
ans+=edges[i].w;
}
for(int i=1;i<=n;i++){
fa[i]=i;
}
sort(edges+1,edges+1+n,cmp);
for(int i=1;i<=k;i++){
if(find_(edges[i].st)!=find_(edges[i].to)){
add(edges[i].st,edges[i].to);
ans-=edges[i].w;
cnt++;
}
if(cnt==n-1){
cout<<ans;
return 0;
}
}
return 0;
}