#include<bits/stdc++.h>
using namespace std;
const int M=2e5+5;
int n,m,k,sum,tot,cnt;
int a[M],fa[M],head[M],ans[M];
bool b[M];
struct E{
int nxt,to,from;
}ed[M*2];
void add(int x,int y){
ed[++tot]=E{head[x],y,x};
head[x]=tot;
}
int find(int x){
return x==fa[x]?x:fa[x]=find(fa[x]);
}
int uni(int u,int v){
int p=find(u);
int q=find(v);
if(p==q) return 0;
fa[p]=q;
sum--;
return 1;
}
int main(){
ios::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
cin>>n>>m;
memset(head,-1,sizeof(head));
for(int i=0;i<n;i++) fa[i]=i;
for(int i=1,x,y;i<=m;i++){
cin>>x>>y;
add(x,y),add(y,x);
}
cin>>k;
sum=n-k;
for(int i=1;i<=k;i++)
cin>>a[i],b[a[i]]=1;
for(int i=0;i<2*m;i++)
if(!b[ed[i].from]&&!b[ed[i].to])
uni(ed[i].from,ed[i].to);
ans[++cnt]=sum;
for(int i=k;i>=1;i--){
int u=a[i];
sum++;
b[u]=0;
for(int i=head[u];i!=-1;i=ed[i].nxt){
int v=ed[i].to;
if(!b[v])
uni(u,v);
}
ans[++cnt]=sum;
}
for(int i=cnt;i>=1;i--) cout<<ans[i]<<endl;
return 0;
}