#include <cstdio>
#include <vector>
#include <algorithm>
using namespace std;
class krawedz
{
public:
int poc,kon,waga;
};
bool porownaj(krawedz k1, krawedz k2)
{
return k1.waga < k2.waga;
}
int main()
{
int t, ilwierzcholkow, ilkraw, a, b, waga;
scanf("%d",&t);
getchar();
while(t--)
{
scanf("n=%d,m=%d",&ilwierzcholkow,&ilkraw);
krawedz *tab;
tab=new krawedz[ilkraw];
for(int i=0;i<ilkraw;i++)
{
getchar();
scanf("{%d,%d}%d",&a,&b,&waga);
tab[i].poc=a;
tab[i].kon=b;
tab[i].waga=waga;
}
getchar();
sort(tab,(tab+ilkraw),porownaj);
int *odw;
odw=new int[ilwierzcholkow];
for(int i = 0; i < ilwierzcholkow; i++)
odw[i]=i;
int sumaodw=0;
int sumawag=0;
int aktpoc,aktkon,aktwaga;
int bufor,bufor2;
for(int i = 0; i < ilkraw; i++)
{
aktpoc=tab[i].poc;
aktkon=tab[i].kon;
aktwaga=tab[i].waga;
if(odw[aktpoc]!=odw[aktkon])
{
sumawag+=aktwaga;
sumaodw++;
for(int j = 0; j < ilwierzcholkow; j++)
{
bufor=odw[aktkon];
bufor2=odw[aktpoc];
if(odw[j]==bufor)
odw[j]=bufor2;
}
if(sumaodw==ilwierzcholkow-1)
break;
}
}
printf("%d\n",sumawag);
delete [] odw;
delete [] tab;
}
return 0;
}
ICAgICAgICAjaW5jbHVkZSA8Y3N0ZGlvPgogICAgICAgICNpbmNsdWRlIDx2ZWN0b3I+CiAgICAgICAgI2luY2x1ZGUgPGFsZ29yaXRobT4KCiAgICAgICAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCiAgICAgICAgY2xhc3Mga3Jhd2VkegogICAgICAgIHsKICAgICAgICBwdWJsaWM6CiAgICAgICAgICAgIGludCBwb2Msa29uLHdhZ2E7CiAgICAgICAgfTsKCiAgICAgICAgYm9vbCBwb3Jvd25haihrcmF3ZWR6IGsxLCBrcmF3ZWR6IGsyKQogICAgICAgIHsKICAgICAgICAgICAgcmV0dXJuIGsxLndhZ2EgPCBrMi53YWdhOwogICAgICAgIH0KCiAgICAgICAgaW50IG1haW4oKQogICAgICAgIHsKICAgICAgICAgICAgaW50IHQsIGlsd2llcnpjaG9sa293LCBpbGtyYXcsIGEsIGIsIHdhZ2E7CgogICAgICAgICAgICBzY2FuZigiJWQiLCZ0KTsKICAgICAgICAgICAgZ2V0Y2hhcigpOwogICAgICAgICAgICB3aGlsZSh0LS0pCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIHNjYW5mKCJuPSVkLG09JWQiLCZpbHdpZXJ6Y2hvbGtvdywmaWxrcmF3KTsKCiAgICAgICAgICAgICAgICBrcmF3ZWR6ICp0YWI7CiAgICAgICAgICAgICAgICB0YWI9bmV3IGtyYXdlZHpbaWxrcmF3XTsKCiAgICAgICAgICAgICAgICBmb3IoaW50IGk9MDtpPGlsa3JhdztpKyspCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgZ2V0Y2hhcigpOwogICAgICAgICAgICAgICAgICAgIHNjYW5mKCJ7JWQsJWR9JWQiLCZhLCZiLCZ3YWdhKTsKICAgICAgICAgICAgICAgICAgICB0YWJbaV0ucG9jPWE7CiAgICAgICAgICAgICAgICAgICAgdGFiW2ldLmtvbj1iOwogICAgICAgICAgICAgICAgICAgIHRhYltpXS53YWdhPXdhZ2E7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBnZXRjaGFyKCk7CgogICAgICAgICAgICAgICAgc29ydCh0YWIsKHRhYitpbGtyYXcpLHBvcm93bmFqKTsKCgoKICAgICAgICAgICAgICAgIGludCAqb2R3OwogICAgICAgICAgICAgICAgb2R3PW5ldyBpbnRbaWx3aWVyemNob2xrb3ddOwogICAgICAgICAgICAgICAgZm9yKGludCBpID0gMDsgaSA8IGlsd2llcnpjaG9sa293OyBpKyspCiAgICAgICAgICAgICAgICAgICAgb2R3W2ldPWk7CgogICAgICAgICAgICAgICAgaW50IHN1bWFvZHc9MDsKICAgICAgICAgICAgICAgIGludCBzdW1hd2FnPTA7CiAgICAgICAgICAgICAgICBpbnQgYWt0cG9jLGFrdGtvbixha3R3YWdhOwogICAgICAgICAgICAgICAgaW50IGJ1Zm9yLGJ1Zm9yMjsKCgogICAgICAgICAgICAgICAgZm9yKGludCBpID0gMDsgaSA8IGlsa3JhdzsgaSsrKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGFrdHBvYz10YWJbaV0ucG9jOwogICAgICAgICAgICAgICAgICAgIGFrdGtvbj10YWJbaV0ua29uOwogICAgICAgICAgICAgICAgICAgIGFrdHdhZ2E9dGFiW2ldLndhZ2E7CiAgICAgICAgICAgICAgICAgICAgaWYob2R3W2FrdHBvY10hPW9kd1tha3Rrb25dKQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgc3VtYXdhZys9YWt0d2FnYTsKICAgICAgICAgICAgICAgICAgICAgICAgc3VtYW9kdysrOwogICAgICAgICAgICAgICAgICAgICAgICBmb3IoaW50IGogPSAwOyBqIDwgaWx3aWVyemNob2xrb3c7IGorKykKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmb3I9b2R3W2FrdGtvbl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWZvcjI9b2R3W2FrdHBvY107CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihvZHdbal09PWJ1Zm9yKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9kd1tqXT1idWZvcjI7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgaWYoc3VtYW9kdz09aWx3aWVyemNob2xrb3ctMSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHByaW50ZigiJWRcbiIsc3VtYXdhZyk7CgogICAgICAgICAgICAgICAgZGVsZXRlIFtdIG9kdzsKICAgICAgICAgICAgICAgIGRlbGV0ZSBbXSB0YWI7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgfQo=
MgpuPTYsbT05CnswLDF9MSB7MCw1fTMgezEsMn05IHsxLDN9NyB7MSw1fTUgezIsM304IHszLDR9NSB7Myw1fTIgezQsNX00Cm49NyxtPTEyCnswLDF9MiB7MCwyfTEgezAsM30yIHswLDR9MSB7MCw1fTIgezAsNn0xIHsxLDJ9NCB7MSw2fTQgezIsM30zIHszLDR9NCB7NCw1fTYgezUsNn04
2
n=6,m=9
{0,1}1 {0,5}3 {1,2}9 {1,3}7 {1,5}5 {2,3}8 {3,4}5 {3,5}2 {4,5}4
n=7,m=12
{0,1}2 {0,2}1 {0,3}2 {0,4}1 {0,5}2 {0,6}1 {1,2}4 {1,6}4 {2,3}3 {3,4}4 {4,5}6 {5,6}8