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 }