1 #include<cstdio>
2 const int N=400100;
3 struct ee{int to,next;}e[N*2];
4 int ans[N],fa[N],x[N],head[N];
5 int tot,cnt,m,n,k;
6 bool pd[N];
7 int root(int x){if (fa[x]==x) return x;fa[x]=root(fa[x]);return fa[x];}
8 void add(int x){
9 int q=root(x);
10 for (int i=head[x];i;i=e[i].next){
11 if (pd[e[i].to]) continue;
12 int p=root(e[i].to);
13 if (p!=q) fa[p]=q,tot--;
14 }
15 }
16
17 void ins(int u,int v){
18 e[++cnt].to=v;e[cnt].next=head[u];head[u]=cnt;
19 }
20
21 int main(){
22 scanf("%d%d",&n,&m);
23 for (int i=1;i<=n;i++) fa[i]=i;
24 int u,v;
25 for(int i=1;i<=m;i++) {
26 scanf("%d%d",&u,&v);
27 ins(u+1,v+1);ins(v+1,u+1);
28 }
29 scanf("%d",&k);
30 for (int i=1;i<=k;i++){
31 scanf("%d",&x[i]);
32 x[i]++;
33 pd[x[i]]=1;
34 }
35 for (int i=1;i<=n;i++) if(!pd[i]){
36 tot++;
37 add(i);
38 }
39 ans[k+1]=tot;
40 for (int i=k;i>0;i--){
41 tot++;
42 add(x[i]);
43 ans[i]=tot;
44 pd[x[i]]=0;
45 }
46 for (int i=1;i<=k+1;i++) printf("%d\n",ans[i]);
47 }