#include<bits/stdc++.h>
using namespace std;
struct node
{
int a,b,l;
}edg[200005];
int n,m,f[5005],ans=0,t=0;
bool cmp(node a,node b)
{
return a.l<b.l;
}
int find(int x)//查找x的爸爸
{
if(x==f[x]) return x;//如果x的爸爸是自己,他就是总爸爸
else return f[x]=find(f[x]);
//x认最后的总爸爸当爸爸,相当于路径压缩
}
void merg(int a,int b)//合并函数
{
int fa=find(a),fb=find(b);
if(fa!=fb) f[fa]=fb;
//a(fa)的总爸爸认b(fb)的总爸爸当爸爸
}
int main()
{
cin>>n>>m;
for(int i=1;i<=n;i++)
f[i]=i;//每个人的爸爸都是自己
for(int i=0;i<m;i++)
cin>>edg[i].a>>edg[i].b>>edg[i].l;
sort(edg,edg+m,cmp);//按照边集排序
for(int i=0;i<m;i++)
{
if(find(edg[i].a)!=find(edg[i].b))
merg(edg[i].a,edg[i].b), ans+=edg[i].l, t++;
//如果总爸爸不是一个人,合并到一起
if(t==n-1)
break;
}
if(t!=n-1)
cout<<"orz";
else
cout<<ans;
return 0;
}