#include<bits/stdc++.h>
using namespace std;
struct kkk{
int x,y,z;
}g[10005];
int n,m,p,f[1001],num,ans;
int cmp(kkk a,kkk b)
{
return a.z<b.z;
}
int findd(int x)
{
if(x!=f[x])f[x]=findd(f[x]);
return f[x];
}
int main()
{
cin>>n>>m>>p;
for(int i=1;i<=n;i++)f[i]=i;
for(int i=1;i<=m;i++)
cin>>g[i].x>>g[i].y>>g[i].z;
sort(g+1,g+m+1,cmp);
for(int i=1;i<=m;i++)
{
int x=findd(g[i].x);
int y=findd(g[i].y);
if(x==y)continue;
num++;
ans+=g[i].z;
f[y]=x;
if(num==n-p)break;
}
if(num!=n-p)cout<<"No Answer"<<endl;
else cout<<ans<<endl;
return 0;
}
#include<bits/stdc++.h>
using namespace std;
struct kkk{
int next,to,v;
}g[400001];
int n,m,x,y,z,sum;
int h[400001],num,vis[5001];
int d[5001],INF=1<<30;
void edge(int x,int y,int z)
{
g[++num].to=y;
g[num].next=h[x];
g[num].v=z;
h[x]=num;
}
int main()
{
cin>>n>>m;
for(int i=1;i<=m;i++)
{
cin>>x>>y>>z;
edge(x,y,z);
edge(y,x,z);
}
for(int i=1;i<=n;i++)d[i]=INF;
d[1]=0;
for(int i=1;i<=n;i++)
{
int minn=INF-1,k=0;
for(int j=1;j<=n;j++)
if(!vis[j]&&d[j]<minn)
minn=d[j],k=j;
if(k==0)
{
cout<<"orz"<<endl;
return 0;
}
sum+=d[k];
vis[k]=1;
for(int j=h[k];j;j=g[j].next)
if(d[g[j].to]>g[j].v)
d[g[j].to]=g[j].v;
}
cout<<sum<<endl;
return 0;
}