/*
题目大意:
要形成k个独立的联通块。
不妨这样想,要生成k个独立的联通块,就是一共只能连n-k条边
也就是要在最小生成树中删去k条边
我们用 co=n-k;
每次连上一条边:co--; (与之前co++不同)
如果最终co还有剩余,说明NO answer
否则就是存在答案
*/
#include <bits/stdc++.h>
using namespace std;
const int N=1e3+10,M=1e4+10;
typedef long long LL;
int p[N];
struct Node
{
int x,y;
int w;
bool operator<(const Node &W)const
{
return w<W.w;
}
}edges[M];
int find(int x)
{
if(x!=p[x]) p[x]=find(p[x]);
return p[x];
}
int main()
{
int n,m,k;
cin>>n>>m>>k;
for(int i=1;i<=n;i++) p[i]=i;
for(int i=1;i<=m;i++)
{
cin>>edges[i].x>>edges[i].y>>edges[i].w;
}
LL sum=0;
int co=n-k;
int ans=0;
sort(edges+1,edges+1+m);
for(int i=1;i<=m;i++)
{
if(co==0) break;
int a=edges[i].x;
int b=edges[i].y;
int w=edges[i].w;
int pa=find(a);
int pb=find(b);
if(pa!=pb)
{
p[pa]=pb;
sum=sum+w;
co--;
}
}
if(co>0) puts("No Answer");
else printf("%lld\n",sum);
return 0;
}