#include<iostream>
#include<algorithm>
using namespace std;
const int N=1010,M=1e4+10;
int p[N];
struct node{
int a,b,v;
}e[M];
bool cmp(node a,node b){
return a.v>b.v;
}
int find(int x){
if(p[x]!=x)p[x]=find(p[x]);
return p[x];
}
int n,m;
int res=0;
int main(){
cin>>n>>m;
for(int i=1;i<=m;i++){
int a,b,v;
cin>>a>>b>>v;
e[i]={a,b,v};
}
for(int i=1;i<=n;i++)p[i]=i;
sort(e+1,e+1+m,cmp);
for(int i=1;i<=m;i++){
int a=find(e[i].a),b=find(e[i].b);
if(a!=b){
p[a]=b;
res+=e[i].v;
}
}
for(int i=1;i<=n;i++){
if(p[i]!=p[1]){
cout<<-1;
return 0;
}
}
cout<<res;
return 0;
}