rt
#include<bits/stdc++.h>
#define ls(x) (x<<1)
#define rs(x) ((x<<1)+1)
#define mid ((l+r)>>1)
using namespace std;
const int N=300005;
int n,m,i,a[N],l[N],r[N];
struct sqt
{
int s[N*4],sum_0[N*4];
bool t[N*4];
void pushup(int p)
{
s[p]=s[ls(p)]+s[rs(p)];
sum_0[p]=sum_0[ls(p)]+sum_0[rs(p)];
}
void addtag(int p,int l,int r,int x)
{
s[p]+=(r-l+1)*x;
if(!s[p]) sum_0[p]=r-l+1;
t[p]+=x;
pushup(p);
}
void pushdown(int p,int l,int r)
{
if(!t[p]) return;
addtag(ls(p),l,mid,t[p]);
addtag(rs(p),mid+1,r,t[p]);
t[p]=0;
}
void build(int p,int l,int r)
{
if(l==r)
{
s[p]=a[l];
return;
}
build(ls(p),l,mid);
build(rs(p),mid+1,r);
pushup(p);
}
void add(int p,int l,int r,int L,int R,int x)
{
if(L>r||R<l) return;
if(L<=l&&r<=R) return addtag(p,l,r,x);
pushdown(p,l,r);
add(ls(p),l,mid,L,R,x);
add(rs(p),mid+1,r,L,R,x);
pushup(p);
}
int ask(int p,int l,int r,int L,int R)
{
if(L>r||R<l) return 0;
if(L<=l&&r<=R) return sum_0[p];
pushdown(p,l,r);
return ask(ls(p),l,mid,L,R)+ask(rs(p),mid+1,r,L,R);
}
}Sqt;
int main()
{
cin>>n>>m;
Sqt.build(1,1,n);
for(i=1;i<=m;i++)
{
cin>>l[i]>>r[i];
Sqt.add(1,1,n,l[i],r[i],1);
}
for(i=1;i<=m;i++)
{
Sqt.add(1,1,n,l[i],r[i],-1);
cout<<Sqt.ask(1,1,n,1,n)<<'\n';
Sqt.add(1,1,n,l[i],r[i],1);
}
return 0;
}