#include<bits/stdc++.h>

using namespace std;

const int INF = 1 << 29;

int main() {
  int N, M, R, r[8];
  int g[200][200];
  fill_n(*g, 200 * 200, INF);
  for(int i = 0; i < N; i++) g[i][i] = 0;

  cin >> N >> M >> R;
  for(int i = 0; i < R; i++) {
    cin >> r[i];
    --r[i];
  }
  for(int i = 0; i < M; i++) {
    int x, y, z;
    cin >> x >> y >> z;
    --x, --y;
    g[x][y] = g[y][x] = z;
  }
  for(int k = 0; k < N; k++) {
    for(int i = 0; i < N; i++) {
      for(int j = 0; j < N; j++) {
        g[i][j] = min(g[i][j], g[i][k] + g[k][j]);
      }
    }
  }
  sort(r, r + R);
  int ret = INF;
  do {
    int cost = 0;
    for(int i = 1; i < R; i++) {
      cost += g[r[i - 1]][r[i]];
    }
    ret = min(ret, cost);
  } while(next_permutation(r, r + R));
  cout << ret << endl;
}

