#include<bits/stdc++.h>
#define ll long long
using namespace std;
struct node{
int x,y,t;
}road[1000000+10];
ll n,m,fa[1000000+10],cnt=n,x=1,times=0;
int fin(int x){
if(fa[x]==x) return x;
else{
fa[x]=fin(fa[x]);
return fa[x];
}
}
bool cmp(node a,node b){
return a.t<b.t;
}
void add(int x,int y,int i){
int t1=fin(x);
int t2=fin(y);
if(t1!=t2){
fa[t1]=t2;
cnt--;
times+=road[i].t;
}
return;
}
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++)fa[i]=i;
for(int i=1;i<=m;i++){
cin>>road[i].x>>road[i].y>>road[i].t;
}
sort(road+1,road+m+1,cmp);
for(int i=1;i<=m;i++){
add(road[i].x,road[i].y,i);
if(cnt==1){
cout<<times;
return 0;
}
}
cout<<-1;
return 0;
}