#include<iostream>
#include<cstdio>
#include<cstring>
#include<queue>
using namespace std;
const int N=1e6+10;
const int M=1e3+10;
int p,n,m;
int cows[N];
int f[M][M];
int dis[M];
bool pd[N];
queue<int> pre;
void spfa(int x){
for(int i=1;i<=n;i++){
dis[i]=0x7fffffff;
pd[i]=false;
}
while(!pre.empty()) pre.pop();
int k;
dis[x]=0;
pre.push(x);
pd[x]=1;
while(!pre.empty()){
k=pre.front();
pre.pop();
pd[k]=0;
for(int i=1;i<=n;i++){
if(f[k][i]!=0&&dis[i]>dis[k]+f[k][i]){
dis[i]=dis[k]+f[k][i];
if(!pd[i]){
pre.push(i);
pd[i]=1;
}
}
}
}
}
int main(){
scanf("%d%d%d",&p,&n,&m);
for(int i=1;i<=p;i++){
scanf("%d",&cows[i]);
}
for(int i=1;i<=m;i++){
int x,y,z;
scanf("%d%d%d",&x,&y,&z);
if(f[x][y]!=0) z=min(z,f[x][y]);
f[x][y]=z;
f[y][x]=z;
}
long long ans=0x7fffffff;
for(int i=1;i<=n;i++){
long long num=0;
spfa(i);
for(int j=1;j<=p;j++){
num+=dis[cows[j]];
}
ans=min(ans,num);
}
printf("%lld",ans);
return 0;
}