#include <bits/stdc++.h>
using namespace std;

typedef long long LL;
const int N=222;
int INF=0x3f3f3f3f;
int dp[N][N];
int task[N];

int main(){
	ios_base::sync_with_stdio(false);
	int n,m,R;
	int a,b,c;
	int res;
	int ans=INF;
	cin>>n>>m>>R;
	
	for(int i=1;i<=R;i++) cin>>task[i];
	
	for(int i=1;i<=n;i++)
	for(int j=1;j<=n;j++)
	dp[i][j]=INF;
	
	for(int i=1;i<=m;i++){
		cin>>a>>b>>c;
		if(dp[a][b]>c) dp[a][b]=c;
		if(dp[b][a]>c) dp[b][a]=c;
	}
	
	
	for(int k=1;k<=n;k++)
	for(int i=1;i<=n;i++)
	for(int j=1;j<=n;j++)
	dp[i][j]=min(dp[i][j],dp[i][k]+dp[k][j]);
		
	sort(task+1,task+1+R);
	do{
		res=0;
		for(int i=1;i<R;i++){
			res+=dp[task[i]][task[i+1]];
		}
		ans=min(ans,res);
	}while(next_permutation(task+1,task+1+R));//È«ÅÅÁÐ
	
	cout<<ans<<endl;
	return 0;
}