#include<bits/stdc++.h>
const int MAXN=5005;
const int inf=0x3f3f3f3f;
bool vis[MAXN];
int dis[MAXN],u,v,w,g[MAXN][MAXN],n,m,ans=0;
using namespace std;
int main()
{
memset(g,0x3f,sizeof(g));
memset(dis,0x3f,sizeof(g));
scanf("%d%d",&n,&m);
for(int i=1;i<=m;i++)
{
scanf("%d%d%d",&u,&v,&w);
g[u][v]=min(g[u][v],w);
g[v][u]=min(g[v][u],w);
}
vis[1]=true;
for(int i=1;i<=n;i++)dis[i]=g[1][i];
dis[0]=inf;
for(int i=1;i<n;++i)
{
int k=0;
for(int j=1;j<=n;++j)
{
if(vis[j]) continue;
if(dis[j]<dis[k]) k=j;
}
//cout<<k<<" "<<dis[k]<<endl;
//getchar();
ans+=dis[k];
vis[k]=true;
for(int j=1;j<=n;++j)
{
if(g[k][j]<dis[j]) dis[j]=g[k][j];
}
}
printf("%d",ans);
return 0;
}