#include <bits/stdc++.h>
using namespace std;
int n,m,minn[5010],f[5005][5005],u,v,minmax1=0;
int l=0;
long long MST=0;
bool b[5010];
inline int read()
{
int x=0,j=1;
char ch=getchar();
while(ch<'0'||ch>'9')
{
if(ch=='-') j=-1;
ch=getchar();
}
while(ch>='0'&&ch<='9')
{
x=x*10+ch-'0';
ch=getchar();
}
return x*j;
}
int main()
{
n=read();m=read();
if(m<n-1)
{
printf("orz");
return 0;
}
for(int t=1;t<=n;++t)
for(int i=1;i<=n;++i)
f[t][i]=INT_MAX;
for(int t=0;t<=n;++t)
minn[t]=INT_MAX;
for(int t=1;t<=m;++t)
{
int x=read(),y=read(),z=read();
if(f[x][y]!=0&&f[x][y]<=z) ;
else
{
f[x][y]=z;
f[y][x]=z;
}
}
minn[1]=0;
b[1]=0;
for(int t=1;t<=n;++t)
{
minmax1=0;
for(int i=1;i<=n;++i)
{
if(b[i]==0&&minn[i]<minn[minmax1])
{
minmax1=i;
}
}
if(minmax1==0) break;
b[minmax1]=1;
MST+=minn[minmax1];
++l;
for(int i=1;i<=n;++i)
{
if(b[i]==0&&f[minmax1][i]!=INT_MAX&&minn[i]>minn[minmax1]+f[minmax1][i])
{
minn[i]=minn[minmax1]+f[minmax1][i];
}
}
}
if(l==n)
printf("%d",MST);
else
printf("orz");
return 0;
}