#include<bits/stdc++.h>
#define int long long
using namespace std;
int max(int x,int y){
if(x>y){
return x;
}
return y;
}
void dijkstra(vector<int> v[],int n,unordered_map<int,int> &mp){
bool vis[n+1];
int dist[n+1];
memset(vis,false,sizeof(vis));
memset(dist,1000000000,sizeof(dist));
dist[1] = 0;
multiset<pair<int,pair<int,int>>> s;
s.insert({0,{0,1}});
while(!s.empty()){
pair <int , pair<int,int>> p = *s.begin();
s.erase(s.begin());
int x = p.second.second; int wei = p.first;
cout<<x<<" "<<wei<<" "<<dist[x]<<'\n';
if( vis[x] ) continue;
vis[x] = true;
for(int i = 0; i < v[x].size(); i++){
int e = v[x][i];
cout<<dist[e]<<'\n';
if(dist[x] + 1 < dist[e] ){
dist[e] = dist[x] + 1;
int prio;
if(mp.find(e)==mp.end()){
prio=1;
}
else{
prio=2;
}
s.insert({dist[e], {prio,e}} );
}
}
}
cout<<dist[n];
}
signed main(){
int n,m,k;
cin>>n>>m>>k;
vector<int> sp(k);
unordered_map<int,int> mp;
for(int i=0;i<k;++i){
cin>>sp[i];
mp[sp[i]]=1;
}
vector<int> g[n+1];
for(int i=0;i<m;++i){
int u,v;
cin>>u>>v;
g[u].push_back(v);
g[v].push_back(u);
}
dijkstra(g,n,mp);
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KI2RlZmluZSBpbnQgbG9uZyBsb25nCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKaW50IG1heChpbnQgeCxpbnQgeSl7CglpZih4PnkpewoJCXJldHVybiB4OwoJfQoJcmV0dXJuIHk7Cn0KIAogCnZvaWQgZGlqa3N0cmEodmVjdG9yPGludD4gdltdLGludCBuLHVub3JkZXJlZF9tYXA8aW50LGludD4gJm1wKXsKICAgIGJvb2wgdmlzW24rMV07CiAgICBpbnQgZGlzdFtuKzFdOwogICAgbWVtc2V0KHZpcyxmYWxzZSxzaXplb2YodmlzKSk7CiAgICBtZW1zZXQoZGlzdCwxMDAwMDAwMDAwLHNpemVvZihkaXN0KSk7CiAgICBkaXN0WzFdID0gMDsKICAgIG11bHRpc2V0PHBhaXI8aW50LHBhaXI8aW50LGludD4+PiBzOwogCiAgICBzLmluc2VydCh7MCx7MCwxfX0pOwogCiAgICB3aGlsZSghcy5lbXB0eSgpKXsKIAogICAgICAgIHBhaXIgPGludCAsIHBhaXI8aW50LGludD4+IHAgPSAqcy5iZWdpbigpOwogICAgICAgIHMuZXJhc2Uocy5iZWdpbigpKTsKIAogICAgICAgIGludCB4ID0gcC5zZWNvbmQuc2Vjb25kOyBpbnQgd2VpID0gcC5maXJzdDsKICAgICAgICBjb3V0PDx4PDwiICI8PHdlaTw8IiAiPDxkaXN0W3hdPDwnXG4nOwogICAgICAgIGlmKCB2aXNbeF0gKSBjb250aW51ZTsKICAgICAgICB2aXNbeF0gPSB0cnVlOwogCiAgICAgICAgZm9yKGludCBpID0gMDsgaSA8IHZbeF0uc2l6ZSgpOyBpKyspewogICAgICAgICAgICBpbnQgZSA9IHZbeF1baV07CiAgICAgICAgICAgIGNvdXQ8PGRpc3RbZV08PCdcbic7CiAgICAgICAgICAgIGlmKGRpc3RbeF0gKyAxIDwgZGlzdFtlXSAgKXsKICAgICAgICAgICAgICAgIGRpc3RbZV0gPSBkaXN0W3hdICsgMTsKICAgICAgICAgICAgICAgIGludCBwcmlvOwogICAgICAgICAgICAgICAgaWYobXAuZmluZChlKT09bXAuZW5kKCkpewogICAgICAgICAgICAgICAgICAgIHByaW89MTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2V7CiAgICAgICAgICAgICAgICAgICAgcHJpbz0yOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcy5pbnNlcnQoe2Rpc3RbZV0sICB7cHJpbyxlfX0gKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KIAogICAgY291dDw8ZGlzdFtuXTsKIAp9CiAKc2lnbmVkIG1haW4oKXsKIAoJaW50IG4sbSxrOwoJY2luPj5uPj5tPj5rOwogCgl2ZWN0b3I8aW50PiBzcChrKTsKCXVub3JkZXJlZF9tYXA8aW50LGludD4gbXA7Cglmb3IoaW50IGk9MDtpPGs7KytpKXsKCQljaW4+PnNwW2ldOwoJCW1wW3NwW2ldXT0xOwoJfQogCgl2ZWN0b3I8aW50PiBnW24rMV07Cglmb3IoaW50IGk9MDtpPG07KytpKXsKCQlpbnQgdSx2OwoJCWNpbj4+dT4+djsKCQlnW3VdLnB1c2hfYmFjayh2KTsKCQlnW3ZdLnB1c2hfYmFjayh1KTsKCX0KIAoJZGlqa3N0cmEoZyxuLG1wKTsKIAp9