#include<iostream>
#include<cstring>
using namespace std ;
int c,n,m,en;
int cow[5005],vis[8005],q[100000],dis[8005],l[8005];
int tail,head;
int ans=1e9,sum;
struct edge{
int f,t,w,n;
}a[1500];
void spfa(int s){
tail=head=1;
q[1]=s;
vis[s]=1;
dis[s]=0;
while(head<=tail){
int xe=l[q[head]];
if(xe==0){
head++;
continue;
}
while(xe!=0){
if(dis[a[xe].f]+a[xe].w<dis[a[xe].t]){
dis[a[xe].t]=dis[a[xe].f]+a[xe].w;
if(vis[a[xe].t]==0){
vis[a[xe].t]=1;
tail++;
q[tail]=a[xe].t;
}
}
xe=a[xe].n;
}
vis[q[head]]=0;
head++;
}
}
void add(int f,int t,int w){
en++;
a[en].f=f;
a[en].t=t;
a[en].w=w;
a[en].n=l[a[en].f];
l[a[en].f]=en;
}
int main(){
cin>>c>>n>>m;
for(int i=1;i<=c;i++)
cin>>cow[i];
for(int i=1;i<=m;i++){
int f,t,w;
cin>>f>>t>>w;
add(f,t,w);
add(t,f,w);
}
for(int i=1;i<=n;i++){
for(int i=1;i<=n;i++){
dis[i]=1e9;
vis[i]=0;
}
spfa(i);
sum=0;
for(int j=1;j<=c;j++) sum+=dis[cow[j]];
ans=min(ans,sum);
// cout<<ans<<','<<i<<endl;
}
cout<<ans<<endl;
return 0;
}