#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define m_p make_pair
#define pb push_back
typedef pair<ll,ll> pii;
vector <pair<ll,pii> >adj;
ll par[100009];
ll siz[100009];
ll root(ll i)
{
while(i!=par[i])
{
par[i]=par[par[i]];
i=par[i];
}
return i;
}
void joins(ll i,ll j)
{
ll root_i=root(i);
ll root_j=root(j);
if(siz[root_i]<siz[root_j])
{
par[root_i]=par[root_j];
siz[root_j]+=siz[root_i];
}
else
{
par[root_j]=par[root_i];
siz[root_i]+=siz[root_j];
}
}
bool finds(ll i,ll j)
{
if(root(i)==root(j))
return true;
else
return false;
}
int main()
{
ll t;
cin>>t;
while(t--)
{
ll a,b,c,v;
scanf("%lld",&v);
for(ll i=1;i<=v;i++)
{
siz[i]=1;
par[i]=i;
}
for(ll i=1;i<=v;i++)
{
string str;
scanf("%s",str);
ll n;
scanf("%lld",&n);
for(ll j=0;j<n;j++)
{
scanf("%lld%lld",&a,&b);
adj.pb({b,{i,a}});
adj.pb({b,{a,i}});
}
}
sort(adj.begin(),adj.end());
// vector <pair<ll,pii> >adj;
ll wt=0;
for(auto ii : adj)
{
ll temp_wt=ii.first;
ll vertex1=ii.second.first;
ll vertex2=ii.second.second;
if(!finds(vertex1,vertex2))
{
wt+=temp_wt;
joins(vertex1,vertex2);
}
}
cout<<wt<<endl;
adj.clear();
}
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgbGwgbG9uZyBsb25nCiNkZWZpbmUgbV9wIG1ha2VfcGFpcgojZGVmaW5lIHBiIHB1c2hfYmFjawp0eXBlZGVmIHBhaXI8bGwsbGw+IHBpaTsKdmVjdG9yIDxwYWlyPGxsLHBpaT4gPmFkajsKbGwgcGFyWzEwMDAwOV07CmxsIHNpelsxMDAwMDldOwoKbGwgcm9vdChsbCBpKQp7CiAgICB3aGlsZShpIT1wYXJbaV0pCiAgICB7CiAgICAgICAgcGFyW2ldPXBhcltwYXJbaV1dOwogICAgICAgIGk9cGFyW2ldOwogICAgfQogICAgcmV0dXJuIGk7Cn0Kdm9pZCBqb2lucyhsbCBpLGxsIGopCnsKICAgIGxsIHJvb3RfaT1yb290KGkpOwogICAgbGwgcm9vdF9qPXJvb3Qoaik7CiAgICBpZihzaXpbcm9vdF9pXTxzaXpbcm9vdF9qXSkKICAgIHsKICAgICAgICBwYXJbcm9vdF9pXT1wYXJbcm9vdF9qXTsKICAgICAgICBzaXpbcm9vdF9qXSs9c2l6W3Jvb3RfaV07CiAgICB9CiAgICBlbHNlCiAgICB7CiAgICAgICAgcGFyW3Jvb3Rfal09cGFyW3Jvb3RfaV07CiAgICAgICAgc2l6W3Jvb3RfaV0rPXNpeltyb290X2pdOwogICAgfQoKCn0KYm9vbCBmaW5kcyhsbCBpLGxsIGopCnsKICAgIGlmKHJvb3QoaSk9PXJvb3QoaikpCiAgICAgICAgcmV0dXJuIHRydWU7CiAgICBlbHNlCiAgICAgICAgcmV0dXJuIGZhbHNlOwoKfQppbnQgbWFpbigpCnsKICAgIGxsIHQ7CiAgICBjaW4+PnQ7CiAgICB3aGlsZSh0LS0pCiAgICB7CgogICAgICAgIGxsIGEsYixjLHY7CiAgICAgICAgc2NhbmYoIiVsbGQiLCZ2KTsKICAgICAgICBmb3IobGwgaT0xO2k8PXY7aSsrKQogICAgICAgIHsKICAgICAgICAgICAgc2l6W2ldPTE7CiAgICAgICAgICAgIHBhcltpXT1pOwogICAgICAgIH0KICAgICAgICBmb3IobGwgaT0xO2k8PXY7aSsrKQogICAgICAgIHsKICAgICAgICAgICAgc3RyaW5nIHN0cjsKICAgICAgICAgICAgc2NhbmYoIiVzIixzdHIpOwogICAgICAgICAgICBsbCBuOwogICAgICAgICAgICBzY2FuZigiJWxsZCIsJm4pOwogICAgICAgICAgICBmb3IobGwgaj0wO2o8bjtqKyspCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIHNjYW5mKCIlbGxkJWxsZCIsJmEsJmIpOwogICAgICAgICAgICAgICAgYWRqLnBiKHtiLHtpLGF9fSk7CiAgICAgICAgICAgICAgICBhZGoucGIoe2Ise2EsaX19KTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBzb3J0KGFkai5iZWdpbigpLGFkai5lbmQoKSk7CgogICAgICAgIC8vIHZlY3RvciA8cGFpcjxsbCxwaWk+ID5hZGo7CiAgICAgICAgbGwgd3Q9MDsKCiAgICAgICAgZm9yKGF1dG8gaWkgOiBhZGopCiAgICAgICAgewogICAgICAgICAgICBsbCB0ZW1wX3d0PWlpLmZpcnN0OwogICAgICAgICAgICBsbCB2ZXJ0ZXgxPWlpLnNlY29uZC5maXJzdDsKICAgICAgICAgICAgbGwgdmVydGV4Mj1paS5zZWNvbmQuc2Vjb25kOwogICAgICAgICAgICBpZighZmluZHModmVydGV4MSx2ZXJ0ZXgyKSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgd3QrPXRlbXBfd3Q7CiAgICAgICAgICAgICAgICBqb2lucyh2ZXJ0ZXgxLHZlcnRleDIpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGNvdXQ8PHd0PDxlbmRsOwogICAgICAgIGFkai5jbGVhcigpOwogICAgfQoKCn0K