#include <cmath>
#include <cstring>
#include <cstdio>
#include <cstdlib>
#include <iostream>
#include <fstream>
#include <algorithm>
#include <queue>
#define rep(i, l, r) for(int i = l; i <= r; i++)
#define down(i, l, r) for(int i = l; i >= r; i--)
#define MS 456789
#define MAX 1037471823
#define Q 103
using namespace std;
struct node
{
int x, y;
bool operator < (const node &k) const { return x < k.x; }
} c[MS];
int n, m, h[MS], l[MS], now, a, b, ans[MS], k[MS], q;
bool r[MS];
int Head(int x)
{
while (h[x] != h[h[x]]) h[x] = h[h[x]];
return h[x];
}
int main()
{
scanf("%d%d", &n, &m);
rep(i, 1, n) h[i] = i; now = n;
rep(i, 1, m) scanf("%d%d", &c[i].x, &c[i].y);
rep(i, 1, m) c[i].x++, c[i].y++;
rep(i, 1, m) c[i+m].x = c[i].y, c[i+m].y = c[i].x; m *= 2;
sort(c+1, c+1+m); c[m+1].x = MAX;
k[1] = 1; rep(i, 2, n+1) { k[i] = k[i-1]; while (c[k[i]].x < i) k[i]++; }
scanf("%d", &q); rep(i, 1, q) scanf("%d", &l[i]); rep(i, 1, q) l[i]++;
rep(i, 1, n) r[i] = true; rep(i, 1, q) r[l[i]] = false;
rep(i, 1, m) if (r[c[i].x] && r[c[i].y])
{
a = Head(c[i].x); b = Head(c[i].y);
if (a != b) now--, h[a] = b;
}
down(o, q, 1)
{
ans[o] = now-o;
r[l[o]] = true;
rep(i, k[l[o]], k[l[o]+1]-1) if (r[c[i].x] && r[c[i].y])
{
a = Head(c[i].x); b = Head(c[i].y);
if (a != b) now--, h[a] = b;
}
}
printf("%d\n", now);
rep(i, 1, q) printf("%d\n", ans[i]);
return 0;
}
I2luY2x1ZGUgPGNtYXRoPgojaW5jbHVkZSA8Y3N0cmluZz4KI2luY2x1ZGUgPGNzdGRpbz4KI2luY2x1ZGUgPGNzdGRsaWI+CiNpbmNsdWRlIDxpb3N0cmVhbT4KI2luY2x1ZGUgPGZzdHJlYW0+CiNpbmNsdWRlIDxhbGdvcml0aG0+CiNpbmNsdWRlIDxxdWV1ZT4KCiNkZWZpbmUgcmVwKGksIGwsIHIpIGZvcihpbnQgaSA9IGw7IGkgPD0gcjsgaSsrKQojZGVmaW5lIGRvd24oaSwgbCwgcikgZm9yKGludCBpID0gbDsgaSA+PSByOyBpLS0pCiNkZWZpbmUgTVMgNDU2Nzg5CiNkZWZpbmUgTUFYIDEwMzc0NzE4MjMKI2RlZmluZSBRIDEwMwoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnN0cnVjdCBub2RlCnsKCWludCB4LCB5OwoJYm9vbCBvcGVyYXRvciA8IChjb25zdCBub2RlICZrKSBjb25zdCB7IHJldHVybiB4IDwgay54OyB9Cn0gY1tNU107CmludCBuLCBtLCBoW01TXSwgbFtNU10sIG5vdywgYSwgYiwgYW5zW01TXSwga1tNU10sIHE7CmJvb2wgcltNU107CgppbnQgSGVhZChpbnQgeCkKewoJd2hpbGUgKGhbeF0gIT0gaFtoW3hdXSkgaFt4XSA9IGhbaFt4XV07CglyZXR1cm4gaFt4XTsKfQoKaW50IG1haW4oKQp7CglzY2FuZigiJWQlZCIsICZuLCAmbSk7CglyZXAoaSwgMSwgbikgaFtpXSA9IGk7IG5vdyA9IG47CglyZXAoaSwgMSwgbSkgc2NhbmYoIiVkJWQiLCAmY1tpXS54LCAmY1tpXS55KTsKCXJlcChpLCAxLCBtKSBjW2ldLngrKywgY1tpXS55Kys7CglyZXAoaSwgMSwgbSkgY1tpK21dLnggPSBjW2ldLnksIGNbaSttXS55ID0gY1tpXS54OyBtICo9IDI7Cglzb3J0KGMrMSwgYysxK20pOyBjW20rMV0ueCA9IE1BWDsKCWtbMV0gPSAxOyByZXAoaSwgMiwgbisxKSB7IGtbaV0gPSBrW2ktMV07IHdoaWxlIChjW2tbaV1dLnggPCBpKSBrW2ldKys7IH0KCXNjYW5mKCIlZCIsICZxKTsgcmVwKGksIDEsIHEpIHNjYW5mKCIlZCIsICZsW2ldKTsgcmVwKGksIDEsIHEpIGxbaV0rKzsKCXJlcChpLCAxLCBuKSByW2ldID0gdHJ1ZTsgcmVwKGksIDEsIHEpIHJbbFtpXV0gPSBmYWxzZTsKCXJlcChpLCAxLCBtKSBpZiAocltjW2ldLnhdICYmIHJbY1tpXS55XSkKCXsKCQlhID0gSGVhZChjW2ldLngpOyBiID0gSGVhZChjW2ldLnkpOwoJCWlmIChhICE9IGIpIG5vdy0tLCBoW2FdID0gYjsKCX0KCWRvd24obywgcSwgMSkKCXsKCQlhbnNbb10gPSBub3ctbzsKCQlyW2xbb11dID0gdHJ1ZTsKCQlyZXAoaSwga1tsW29dXSwga1tsW29dKzFdLTEpIGlmIChyW2NbaV0ueF0gJiYgcltjW2ldLnldKQoJCXsKCQkJYSA9IEhlYWQoY1tpXS54KTsgYiA9IEhlYWQoY1tpXS55KTsKCQkJaWYgKGEgIT0gYikgbm93LS0sIGhbYV0gPSBiOwoJCX0KCX0KCXByaW50ZigiJWRcbiIsIG5vdyk7CglyZXAoaSwgMSwgcSkgcHJpbnRmKCIlZFxuIiwgYW5zW2ldKTsKCXJldHVybiAwOwp9Cg==