#include <iostream>
#include <cstdio>
#include <vector>
#include <algorithm>
#define MAX 1000012
using namespace std;
struct edge{
int u, v, w;
edge(){}
edge(int _u, int _v, int _w){
u = _u;
v = _v;
w = _w;
}
};
bool cmp(edge a, edge b){
return a.w < b.w;
}
int parentof[MAX];
void init(){
for(int i = 0; i < MAX; ++i) parentof[i] = i;
}
int root(int a){
if (a == parentof[a]) return a;
return parentof[a] = root(parentof[a]);
}
void unite(int a, int b){
a = root(a);
b = root(b);
parentof[a] = b;
}
int T;
int n, m, k;
int u, v, w;
int main(){
scanf("%d", &T);
while(T--){
scanf("%d %d %d", &n, &m, &k);
vector<edge> E;
for(int i = 0; i < m; ++i){
scanf("%d %d %d", &u, &v, &w);
E.push_back(edge(u, v, w));
}
sort(E.begin(), E.end(), cmp);
int SUM = 0;
int groupN = n;
init();
for(int i = 0; i < E.size(); ++i){
if(root(E[i].u) != root(E[i].v)){
//cout << E[i].u << " " << E[i].v << endl;
unite(E[i].u, E[i].v);
SUM += E[i].w;
--groupN;
}
if(groupN <= k) break;
}
if(groupN > k){
printf("%d\n", -1);
} else {
printf("%d\n", SUM);
}
}
//getchar();
//getchar();
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y3N0ZGlvPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8YWxnb3JpdGhtPgoKI2RlZmluZSBNQVggMTAwMDAxMgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnN0cnVjdCBlZGdlewogICAgICAgaW50IHUsIHYsIHc7CiAgICAgICBlZGdlKCl7fQogICAgICAgZWRnZShpbnQgX3UsIGludCBfdiwgaW50IF93KXsKICAgICAgICAgICAgICAgIHUgPSBfdTsKICAgICAgICAgICAgICAgIHYgPSBfdjsKICAgICAgICAgICAgICAgIHcgPSBfdzsKICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgfQp9OwoKYm9vbCBjbXAoZWRnZSBhLCBlZGdlIGIpewogICAgIHJldHVybiBhLncgPCBiLnc7ICAgICAKfQoKaW50IHBhcmVudG9mW01BWF07Cgp2b2lkIGluaXQoKXsKICAgICBmb3IoaW50IGkgPSAwOyBpIDwgTUFYOyArK2kpIHBhcmVudG9mW2ldID0gaTsgICAgIAp9CgppbnQgcm9vdChpbnQgYSl7CiAgICBpZiAoYSA9PSBwYXJlbnRvZlthXSkgcmV0dXJuIGE7CiAgICByZXR1cm4gcGFyZW50b2ZbYV0gPSByb290KHBhcmVudG9mW2FdKTsKfQoKdm9pZCB1bml0ZShpbnQgYSwgaW50IGIpewogICAgIGEgPSByb290KGEpOwogICAgIGIgPSByb290KGIpOwogICAgIAogICAgIHBhcmVudG9mW2FdID0gYjsKfQoKaW50IFQ7CmludCBuLCBtLCBrOwppbnQgdSwgdiwgdzsKaW50IG1haW4oKXsKICAgIHNjYW5mKCIlZCIsICZUKTsKICAgIAogICAgd2hpbGUoVC0tKXsKICAgICAgICAgICAgICAgc2NhbmYoIiVkICVkICVkIiwgJm4sICZtLCAmayk7CiAgICAgICAgICAgICAgIHZlY3RvcjxlZGdlPiBFOwogICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgZm9yKGludCBpID0gMDsgaSA8IG07ICsraSl7CiAgICAgICAgICAgICAgICAgICAgICAgc2NhbmYoIiVkICVkICVkIiwgJnUsICZ2LCAmdyk7CiAgICAgICAgICAgICAgICAgICAgICAgRS5wdXNoX2JhY2soZWRnZSh1LCB2LCB3KSk7CiAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgIHNvcnQoRS5iZWdpbigpLCBFLmVuZCgpLCBjbXApOwogICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgaW50IFNVTSA9IDA7CiAgICAgICAgICAgICAgIGludCBncm91cE4gPSBuOwogICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgaW5pdCgpOwogICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgZm9yKGludCBpID0gMDsgaSA8IEUuc2l6ZSgpOyArK2kpewogICAgICAgICAgICAgICAgICAgICAgIGlmKHJvb3QoRVtpXS51KSAhPSByb290KEVbaV0udikpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2NvdXQgPDwgRVtpXS51IDw8ICIgIiA8PCBFW2ldLnYgPDwgZW5kbDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pdGUoRVtpXS51LCBFW2ldLnYpOyAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1VNICs9IEVbaV0udzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS1ncm91cE47ICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgaWYoZ3JvdXBOIDw9IGspIGJyZWFrOwogICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgIGlmKGdyb3VwTiA+IGspewogICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCIlZFxuIiwgLTEpOyAgICAgICAgICAKICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50ZigiJWRcbiIsIFNVTSk7CiAgICAgICAgICAgICAgIH0KICAgIH0KCiAgICAvL2dldGNoYXIoKTsKICAgIC8vZ2V0Y2hhcigpOwogICAgcmV0dXJuIDA7Cn0K