#include <bits/stdc++.h>
using namespace std;
int n1, n2, minx = INT_MAX, minpos, a, b, y, m, k;
int n, i, j, x, flour[100001], f;
struct node {
  int x, y, w;
};
int cmp(node a, node b) { return a.w < b.w; }
node g[100001];
int main() {
  cin >> n >> m >> k;
  for (i = 0; i < m; i++) {
    cin >> g[i].x >> g[i].y >> g[i].w;
  }
  for (i = 0; i < k; i++) {
    cin >> f;
    flour[f] = 1;
  }
  sort(g, g + m, cmp);
  for (i = 0; i < m; ++i) {
    if (flour[g[i].x] ^ flour[g[i].y]) {
      cout << g[i].w;
      return 0;
    }
  }
  cout << -1;
  return 0;
}
