#include
#define M 100000
int map[503][503];
int v,sum;
void prim()
{
int used[503]={0},dis[503]={0};
int i,j,k,min;
sum=0;
for(i=1;i<=v;i++)
dis[i]=map[1][i];
for(i=2;i<=v;i++)
{
min=M;
for(j=2;j<=v;j++)
if(min>dis[j]&&used[j]==0)
{
min=dis[j];
k=j;
}
sum+=min;
used[k]=1;
for(j=1;j<=v;j++)
if(used[j]==0&&dis[j]>map[k][j])
dis[j]=map[k][j];
}
}
int main()
{
int s,e;
scanf("%d",&s);
while(s--)
{
int i,j,a,b,c,t,min=M;
scanf("%d%d",&v,&e);
for(i=1;i<=v;i++)
for(j=1;j<=v;j++)
map[i][j]=M;
for(i=0;i
{
scanf("%d%d%d",&a,&b,&c);
map[a][b]=map[b][a]=c;
}
for(i=0;i
{
scanf("%d",&t);
if(min>t)
min=t;
}
prim();
printf("%d
",sum+min);
}
return 0;
}