(n,m),*e=[[*map(int,s.split())]for s in open(0)] uv=[(u-1,v-1)for u,v in e[:m]] q=e[m][0] bs=[i[0]-1 for i in e[m+1:]] uf=[*range(n)] d=[1]*n def find(x): q=[] while uf[x]^x:q+=x,;x=uf[x] for p in q:uf[p]=x return x def unite(x,y): x,y=find(x),find(y) if x==y:return if d[x]>d[y]:x,y=y,x uf[x]=y;d[y]+=d[x] f={*range(m)}-{*bs} for i in f: unite(*uv[i]) l=[[]for _ in range(n)] for i in range(n): l[find(i)]+=i, now=1 for i in range(n): t=len(l[i]) now+=t*(n-t) now//=2 ans=[now] for i in bs[::-1]: u,v=uv[i] u,v=find(u),find(v) if u!=v: now-=d[u]*d[v] unite(u,v) ans+=now, print(*ans[::-1][1:],sep='\n')