#include #include using namespace std; int main(){ int n,m;cin>>n>>m; vector u(m),v(m); for(int i=0;i>u[i]>>v[i]; u[i]--;v[i]--; } int q;cin>>q; vector b(q); vector rem(m,1); for(int i=0;i>b[i];b[i]--; rem[b[i]]=0; } atcoder::dsu uf(n); for(int i=0;i ans(q,(long long)n*(n-1)/2); for(auto i:uf.groups()){ ans[q-1]-=(long long)(i.size())*(i.size()-1)/2; } for(int i=q-1;i;i--){ ans[i-1]=ans[i]; if(!uf.same(u[b[i]],v[b[i]])){ long long g1=uf.size(u[b[i]]),g2=uf.size(v[b[i]]); ans[i-1]+=g1*(g1-1)/2+g2*(g2-1)/2-(g1+g2)*(g1+g2-1)/2; uf.merge(u[b[i]],v[b[i]]); } } for(auto i:ans)cout<