#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=4e5+10;
int n,m,x,y,k,ans,cnt,res[N],f[N],q[N];
int att[N];//attack攻击
vector<int> v[N];
int find(int x){
return f[x]==x?x:f[x]=find(f[x]);
}
int merge(int x,int y){
int fx=find(x),fy=find(y);
if(fx==fy){
return 0;
}
f[fx]=fy;
return 1;
}
signed main(){
cin.tie(0);
ios::sync_with_stdio(0);
cin>>n>>m;
for(int i=0;i<n;i++){
f[i]=i;
}
for(int i=1;i<=n;i++){
cin>>x>>y;
v[x].push_back(y);
v[y].push_back(x);
}
cin>>k;
for(int i=1;i<=k;i++){
cin>>att[i];
q[att[i]]=1;
}
for(int i=0;i<n;i++){
for(int j=0;j<v[i].size();j++){
if(q[i]==1||q[v[i][j]]==1){
continue;
}
merge(i,v[i][j]);
}
}
for(int i=0;i<n;i++){
if(f[i]==i&&!q[i]){
ans++;
}
}
res[1]=ans;
cnt=1;
for(int i=k;i>=1;i--){
x=att[i];
q[x]=0;
ans++;
for(int j=0;j<v[x].size();j++){
y=v[x][j];
if(!q[y]){
ans-=merge(x,y);
}
}
cnt++;
res[cnt]=ans;
}
for(int i=cnt;i>=1;i--){
cout<<res[i]<<"\n";
}
return 0;
}