#include<bits/stdc++.h>
using namespace std;
#define INF 1000000007
int n,m,r,c=INF;
int rr[9];
vector<vector<int>> road(201,vector<int>(201,INF));
bool f[9];
void dfs(int cnt,int now,int cost){
  if(cnt==r){
    c=min(cost,c);
    return;
  }
  for(int i=1;i<=r;i++){
    if(!f[i]){
      f[i]=true;
      if(now==0){
        dfs(cnt+1,i,cost);
      }else{
        dfs(cnt+1,i,cost+road[rr[now]][rr[i]]);
      }
      f[i]=false;
    }
  }
}
int main(){
  cin>>n>>m>>r;
  for(int i=1;i<=r;i++){
    cin>>rr[i];
  }
  for(int i=1;i<=m;i++){
    int a,b,c;
    cin>>a>>b>>c;
    road[a][b]=road[b][a]=c;
  }
  for(int k=1;k<=n;k++){
    for(int i=1;i<=n;i++){
      for(int j=1;j<=n;j++){
        if(road[i][j]>road[i][k]+road[k][j]){
          road[i][j]=road[i][k]+road[k][j];
        }
      }
    }
  }
  dfs(0,0,0);
  cout<<c;
}
