#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
struct edge{
	int u,v;
}e[100005];
ll fa[100005],ans[100005],sz[100005];
int find(int x) {
	if(x==fa[x]) return x;
	return fa[x]=find(fa[x]);
}
int main(){
	ll n,m;
	cin>>n>>m;
	for(int i=1;i<=m;i++){
		cin>>e[i].u;
		cin>>e[i].v;
	}
	for(int i=1;i<=n;i++){
		fa[i]=i;
		sz[i]=1;
	}
	ans[m]=(ll)n*(n-1)/2;
	for(int i=m;i>=1;i--){
		int u,v;
		u=find(e[i].u);
		v=find(e[i].v);
		if(u==v){
			ans[i-1]=ans[i];
		}
		else{
			ans[i-1]=ans[i]-sz[v]*sz[u];
			sz[v]+=sz[u];
			fa[u]=v;
		}
	}
	for(int i=1;i<=m;i++){
		cout<<ans[i]<<endl;
	}
	return 0;
}
