#include <bits/stdc++.h>
using namespace std;
vector<pair<int, int> > g[100010];
int main() {
  int n, m, k, u, v, l;
  cin >> n >> m >> k;
  bool st[n + 1];
  memset(st, 0, n + 1);
  for (int i = 0; i < m; i++) {
    cin >> u >> v >> l;
    g[u].push_back(make_pair(v, l));
    g[v].push_back(make_pair(u, l));
  }
  if (!k) {
    cout << "-1\n";
    return 0;
  }
  for (int i = 0; i < k; i++) {
    cin >> u;
    st[u] = 1;
  }
  int mi = (int)(1e9 + 10);
  for (int i = 1; i <= n; i++) {
    if (st[i]) {
      for (vector<pair<int, int> >::iterator it = g[i].begin();
           it != g[i].end(); it++) {
        if (!st[it->first]) {
          mi = min(mi, it->second);
        }
      }
    }
  }
  if (mi == (int)(1e9 + 10)) {
    cout << "-1\n";
  } else
    cout << mi << "\n";
  return 0;
}
