#include<bits/stdc++.h>
#define to first
#define weight second
using namespace std;
const int maxn = 805;
int n,p,c;
int a[505],dis[805],ans = 0x3f3f3f3f;
bool vis[805];
vector< pair<int,int> >g[maxn];
void dj(int s){
memset(dis,0x3f3f3f,sizeof(dis));
memset(vis,0,sizeof(vis));
priority_queue< pair<int,int> > q;
dis[s] = 0;
q.push(make_pair(s,0));
while(!q.empty()){
pair<int,int> x = q.top();
q.pop();
if(vis[x.to])
continue;
vis[x.to] = 1;
for(int i = 0;i < g[x.to].size();i++){
int v = g[x.to][i].to,w = g[x.to][i].weight;
if(dis[v] > dis[x.to]+w){
dis[v] = dis[x.to]+w;
q.push(make_pair(v,-dis[v]));
}
}
}
}
int main(){
ios::sync_with_stdio(false);
cin>>n>>p>>c;
for(int i = 1;i <= n;i++){
cin>>a[i];
}
for(int i = 1;i <= c;i++){
int u,v,w;
cin>>u>>v>>w;
g[u].push_back(make_pair(v,w));
g[v].push_back(make_pair(u,w));
}
for(int i = 1;i <= p;i++){
dj(i);
int sum = 0;
for(int j = 1;j <= n;j++){
sum += dis[a[j]];
}
ans = min(ans,sum);
}
cout<<ans;
return 0;
}