#include <bits/stdc++.h>
using namespace std;
const int N = 2e5 + 5;
void solve() {
int n, m, k;
cin >> n >> m >> k;
vector<vector<pair<int, int>>> adj(n);
cout << n << m << k;
for (int i = 0; i < m; i++) {
int u, v, w;
cin >> u >> v >> w;
u--;
v--;
adj[u].push_back({v, w});
adj[v].push_back({u, w});
}
unordered_set<int> storages;
for (int i = 0; i < k; i++) {
int x;
cin >> x;
x--;
storages.insert(x);
}
int ans = 2e9;
for (auto it = storages.begin(); it != storages.end(); it++) {
for (pair<int, int>& v : adj[*it]) {
if (storages.find(v.first) == storages.end()) {
ans = min(ans, v.second);
}
}
}
if (ans == 2e9) cout << -1 << endl;
else cout << ans << endl;
}
int main() {
solve();
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgpjb25zdCBpbnQgTiA9IDJlNSArIDU7Cgp2b2lkIHNvbHZlKCkgewoJaW50IG4sIG0sIGs7CgljaW4gPj4gbiA+PiBtID4+IGs7Cgl2ZWN0b3I8dmVjdG9yPHBhaXI8aW50LCBpbnQ+Pj4gYWRqKG4pOwoJY291dCA8PCBuIDw8IG0gPDwgazsKCWZvciAoaW50IGkgPSAwOyBpIDwgbTsgaSsrKSB7CgkJaW50IHUsIHYsIHc7CgkJY2luID4+IHUgPj4gdiA+PiB3OwoJCXUtLTsKCQl2LS07CgkJYWRqW3VdLnB1c2hfYmFjayh7diwgd30pOwoJCWFkalt2XS5wdXNoX2JhY2soe3UsIHd9KTsKCX0KCXVub3JkZXJlZF9zZXQ8aW50PiBzdG9yYWdlczsKCWZvciAoaW50IGkgPSAwOyBpIDwgazsgaSsrKSB7CgkJaW50IHg7CgkJY2luID4+IHg7CgkJeC0tOwoJCXN0b3JhZ2VzLmluc2VydCh4KTsKCX0KCWludCBhbnMgPSAyZTk7Cglmb3IgKGF1dG8gaXQgPSBzdG9yYWdlcy5iZWdpbigpOyBpdCAhPSBzdG9yYWdlcy5lbmQoKTsgaXQrKykgewoJCWZvciAocGFpcjxpbnQsIGludD4mIHYgOiBhZGpbKml0XSkgewoJCQlpZiAoc3RvcmFnZXMuZmluZCh2LmZpcnN0KSA9PSBzdG9yYWdlcy5lbmQoKSkgewoJCQkJYW5zID0gbWluKGFucywgdi5zZWNvbmQpOwoJCQl9CgkJfQoJfQoJaWYgKGFucyA9PSAyZTkpIGNvdXQgPDwgLTEgPDwgZW5kbDsKCWVsc2UgY291dCA8PCBhbnMgPDwgZW5kbDsKfQoKaW50IG1haW4oKSB7Cglzb2x2ZSgpOwp9