#include <bits/stdc++.h>
using namespace std;
pair<int, pair<int, int> > tab[100007];
bitset<100007> odw;
int main() {
  int n, m, k, a;
  scanf("%d %d %d", &n, &m, &k);
  for (int i = 1; i <= m; i++) {
    scanf("%d %d %d", &tab[i].second.first, &tab[i].second.second,
          &tab[i].first);
  }
  for (int i = 1; i <= k; i++) {
    scanf("%d", &a);
    odw[a] = true;
  }
  sort(tab + 1, tab + m + 1);
  for (int i = 1; i <= m; i++) {
    if ((odw[tab[i].second.first] == false &&
         odw[tab[i].second.second] == true) ||
        (odw[tab[i].second.first] == true &&
         odw[tab[i].second.second] == false)) {
      cout << tab[i].first;
      return 0;
    }
  }
  cout << -1;
  return 0;
}
