#include<stdio.h>
#include<stdlib.h>
#define inf 0x3fffffff
#define N 600
struct node {
int x,y,w;
}ma[N*N];
int cmp(const void *a,const void *b) {
return (*(struct node *)a).w-(*(struct node *)b).w;
}
int pre[N];
int find(int x) {
if(x!=pre[x])
pre[x]=find(pre[x]);
return pre[x];
}
int main() {
int t,n,m,i,j,k,aa,bb;
scanf("%d",&t);
while(t--) {
scanf("%d%d",&n,&m);
for(i=0;i<m;i++)
scanf("%d%d%d",&ma[i].x,&ma[i].y,&ma[i].w);
qsort(ma,m,sizeof(ma[0]),cmp);
k=0;
for(i=1;i<=n;i++)
pre[i]=i;
for(i=0;i<m;i++) {
aa=find(ma[i].x);
bb=find(ma[i].y);
if(aa!=bb) {
pre[aa]=bb;
k+=ma[i].w;
}
}
j=inf;
for(i=0;i<n;i++) {
scanf("%d",&m);
if(m<j)
j=m;
}
printf("%d\n",j+k);
}
return 0;
}