#include<bits/stdc++.h>
using namespace std;
int n,m,q,a[200005];
set<int> s[200005];
pair<int,int> tag[200005];
int main(){
cin>>n>>m>>q;
for(int i=1;i<=n;++i) a[i]=i,tag[i]={-1,-1};
for(int i=1,x,y;i<=m;++i){
cin>>x>>y;
s[x].insert(y);
s[y].insert(x);
}
int tim=0;
while(q--){
tim++;
int u,v;
cin>>u;
if(s[u].size()<=sqrt(m)){
int yyy=a[u],t=tag[u].first,t1=a[u];
for(set<int>::iterator it=s[u].begin();it!=s[u].end();++it){
if(tag[*it].second!=-1){
if(tag[*it].first>t) t=tag[*it].first,t1=tag[*it].second;
}
}
a[u]=t1;
for(set<int>::iterator it=s[u].begin();it!=s[u].end();++it){
a[*it]=t1;
}
tag[u]={t,t1};
}else{
tag[u]={tim,a[u]};
}
}
for(int u=1;u<=n;++u){
int y1=a[u],yyy=tag[u].first,t=tag[u].first,t1=a[u];
for(set<int>::iterator it=s[u].begin();it!=s[u].end();++it){
if(tag[*it].second!=-1){
if(tag[*it].first>t) t=tag[*it].first,t1=tag[*it].second;
}
}
a[u]=t1;
}
for(int i=1;i<=n;++i) cout<<a[i]<<' ';
return 0;
}