#include<bits/stdc++.h>
using namespace std;
int w[10005];
int n,m,r,s,M=0x7fffffff;
struct bian
{
int a,b;
int w;
}mm[100005];
bool cmp(bian a,bian b)
{
return a.w<b.w;
}
int nn[10005];
int f(int x)
{
return x==nn[x]?x:(nn[x]=f(nn[x]));
}
int main()
{
cin>>n>>m;
for(int i=1;i<=n;i++)
{
cin>>w[i];
nn[i]=i;
M=min(M,w[i]);
}
for(int i=1;i<=m;i++)
{
cin>>mm[i].a>>mm[i].b>>mm[i].w;
}
sort(mm+1,mm+m+1,cmp);
for(int i=1;i<=m;i++)
{
if(f(mm[i].a)!=f(mm[i].b))
{
r++;
s+=(2*mm[i].w+w[mm[i].a]+w[mm[i].b]);
nn[f(mm[i].a)]=f(mm[i].b);
if(r>=n-1)
{
break;
}
}
}
cout<<s+M;
return 0;
}