#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn=205;
ll dis[maxn][maxn];
int n,m,r;
int no[10];
int x,y;
ll w;
int main() {
	memset(dis,0x3f3f3f3f,sizeof dis);
	cin>>n>>m>>r;
	for(int i=1;i<=r;i++)
		cin>>no[i];
	while(m--) {
		cin>>x>>y>>w;
		dis[x][y]=dis[y][x]=min(dis[x][y],w);
	}
	for(int k=1;k<=n;k++) {
		for(int i=1;i<=n;i++) {
			if(i==k)
				continue;
			for(int j=1;j<=n;j++) {
				if(j==i||j==k)
					continue;
				dis[i][j]=dis[j][i]=min(dis[i][j],dis[i][k]+dis[k][j]);
			}
		}
	}
	sort(no+1,no+r+1);
	ll mi=1e18;
	do {
		ll ans=0;
		for(int i=2;i<=r;i++) {
//			cout<<no[i]<<" "<<no[i-1]<<" "<<dis[no[i]][no[i-1]]<<endl;
			ans+=dis[no[i-1]][no[i]];
		}
		mi=min(mi,ans);
	}while(next_permutation(no+1,no+r+1));
	cout<<mi<<endl;
	return 0;
}