#include<bits/stdc++.h>
using namespace std;
const int MAXN=1010;
int G[MAXN][MAXN]={};
int temp[MAXN][MAXN]={};
bool vis[MAXN]={false};
int n,m,k;
int cnt=0;
void dfs(int u,int depth){
vis[u]=true;
for(int i=1;i<=n;i++){
if(temp[u][i]==1&&vis[i]==false)
dfs(i,depth+1);
}
}
int dfstra(){
for(int i=1;i<=n;i++){
if(vis[i]==false){
dfs(i,1);
cnt++;
}
}
return cnt;
}
int main()
{
//freopen("in.txt","r",stdin);freopen("out.txt","w",stdout);
cin>>n>>m>>k;
for(int i=0;i<m;i++){
int start,end;
//cin>>start>>end;
scanf("%d %d",&start,&end);
G[start][end]=1;
G[end][start]=1;
}
vector<int> ppp;
for(int i=0;i<k;i++){
int t;//cin>>t;
scanf("%d",&t);
for(int j=0;j<MAXN;j++){
for(int t=0;t<MAXN;t++){
temp[j][t]=G[j][t];
}
}
for(int j=1;j<=n;j++){
if(temp[t][j]==1){
temp[t][j]=0;
temp[j][t]=0;
}
}
//vis[MAXN]={false};
fill(vis,vis+1010,false);
cnt=0;
vis[t]=true;
ppp.push_back(dfstra());
}
for(int i=0;i<ppp.size();i++){
//cout<<ppp[i]-1<<endl;
printf("%d\n",ppp[i]-1);
}
return 0;
}
fill填充,printf和scanf导入导出