#include <bits/stdc++.h>
using namespace std;

/*
n个点,m个已知关系,要组成k个集合,最小代价是多少 
*/
struct node{
	int x,y,len;
}; 

node a[10010];
int f[1010];
int n,m,k;

bool cmp(node n1,node n2){
	return n1.len < n2.len;
}

int find(int x){
	return x == f[x]?x:f[x] = find(f[x]);
}

int main(){
	cin>>n>>m>>k;
	for(int i = 1;i <= m;i++){
		cin>>a[i].x>>a[i].y>>a[i].len;
	}
	
	sort(a+1,a+1+m,cmp);
	
	for(int i = 1;i <= n;i++){
		f[i] = i;
	}
	
	//修路
	int s = 0,c = 0;
	for(int i = 1;i <= m;i++){
		int fx = find(a[i].x);
		int fy = find(a[i].y);
		if(fx != fy){
			f[fx] = fy;
			c++;
			s = s + a[i].len;
		}
		
		if(c == n - k){
			cout<<s;
			return 0;
		}
	} 
	
	cout<<"No Answer";
	return 0;
}

/**************************************************************
	Problem: 2090
	User: admin
	Language: C++
	Result: Accepted
	Time:26 ms
	Memory:2200 kb
****************************************************************/