#include <iostream>
#include <algorithm>
using namespace std;
int fa[10005];
struct edge{
int u,v,w;
}e[500001];
int m,n;
bool cmp(edge x,edge y)
{
return x.w <y.w;
}
int find(int x)
{
return fa[x] == x ? x : fa[x] = find(fa[x]);
}
bool merge(int a,int b)
{
int p = find(a);
int q = find(b);
if(p==q) return 0;
fa[q] = p;
return 1;
}
int Kruskal()
{
int ans=0;
sort(e+1,e+m+1,cmp);
for(int i=1;i<=m;i++)
{
if(merge(e[i].u,e[i].v))
{
ans+=e[i].w;
n--;
if(n==1) return ans;
}
}
return 0;
}
int main()
{
cin>>m>>n;
for(int i=1;i<=n;i++)
{
fa[i] = i;
}
for(int i=1;i<=m;i++)
cin>>e[i].u>>e[i].v>>e[i].w;
if(!Kruskal()) cout<<"orz";
else cout<<Kruskal();
return 0;
}