#define MAX 0x7fffff
#define MAX_NUM 10000
using namespace std;
int n;
int m;
int k;
int area[MAX_NUM] = { 0 };
int num = 0;
int beauty = 0;
struct Edgetype {
int from;
int to;
int weight;
};
Edgetype bian[MAX_NUM];
void input() {
for (int j= 1; j <= m; j++) {
Edgetype temp;
int i;
int k;
cin >>temp.from>> temp.to >> temp.weight;
for (i = 1; i <= num; i++) {
if (temp.weight > bian[i].weight) {
for (k = num+1; k >i; k--) {
bian[k] = bian[k - 1];
}
bian[i] = temp;
num++;
}
}
if (i == num+1)bian[++num] = temp;
}
}
int findroot(int v) {
int t = v;
while (area[t] > -1) {
t = area[t];
}
return t;
}
void kruskal() {
int opp = 0;
for (int i = 1; i <= m; i++) {
int vex1 = findroot(bian[i].from);
int vex2 = findroot(bian[i].to);
if (vex1 != vex2) {
opp++;
area[vex2] = vex1;
beauty += bian[i].weight;
if (opp == k )return;
}
}
}
int main(){
cin >> n >> m >> k;
for (int i = 1; i <= n; i++)
area[i] = -1;
input();
kruskal();
cout << beauty;
return 0;
}```