#include<bits/stdc++.h>
using namespace std;
struct st{
int id,w;
};
vector<st> e[260001];
long long n,p,c,v[100010],dis[100010],dis1[100010],w[100010];
long long sum=0x3f3f3f3f,cnt;
void belll(int star){
memset(dis,0x3f,sizeof dis);
memset(v,0,sizeof v);
dis[star]=0;
v[star]=1;
queue<int> q;
q.push(star);
while(q.size()){
int i=q.front();
q.pop();
v[i]=0;
for(auto j:e[i]){
if(dis[j.id]>dis[i]+j.w){
dis[j.id]=dis[i]+j.w;
if(!v[j.id]){
q.push(j.id);
v[j.id]=1;
}
}
}
}
}
int main() {
cin>>n>>p>>c;
for(int i=1;i<=n;i++){
cin>>w[i];
}
for(int i=1;i<=c;i++){
int x,y,z;
cin>>x>>y>>z;
e[x].push_back({y,z});
e[y].push_back({x,z});
}
for(int j=1;j<=n;j++){
belll(w[j]);
for(int i=1;i<=p;i++){
dis1[i]+=dis[i];
}
}
for(int i=1;i<=p;i++){
sum=min(sum,dis1[i]);
}
cout<<sum;
return 0;
}