#include<bits/stdc++.h>
using namespace std;
#define PII pair<int,int>
const int N = 3e4 + 5;
int n,p,c,ans = 1e9;
int h[N],e[N],ne[N],w[N],idx,g[N],dis[N];
bool st[N];
void add(int u,int v,int c){
e[idx] = v,ne[idx] = h[u],w[idx] = c,h[u] = idx++;
}
int Dijstra(int s){
memset(dis,0x3f,sizeof(dis));
memset(st,0,sizeof(st));
priority_queue<PII,vector<PII>,greater<PII> > q;
q.push({0,s});
dis[s] = 0;
while(q.size()){
PII t = q.top();
q.pop();
st[t.second] = false;
int u = t.second;
for(int i = h[u];~i;i = ne[i]){
int v = e[i];
if(dis[v] > dis[u] + w[i]){
dis[v] = dis[u] + w[i];
if(!st[v]){
q.push({dis[v],v});
st[v] = true;
}
}
}
}
long long sum = 0;
for(int i = 1;i <= p;i++) sum += dis[i] * g[i];
return sum;
}
int main(){
memset(h,-1,sizeof(h));
scanf("%d%d%d",&n,&p,&c);
for(int i = 1;i <= n;i++){int x;scanf("%d",&x);g[x]++;}
for(int i = 1;i <= c;i++){
int x,y,z;
scanf("%d%d%d",&x,&y,&z);
add(x,y,z);add(y,x,z);
}
for(int i = 1;i <= p;i++){ans = min(ans,Dijstra(i));}
printf("%d\n",ans);
return 0;
}