#include<iostream> #include<cstdio> using namespace std; struct data{ int l,r,sum; bool tag; }tr[8500001]; int n,m; void build(int k,int s,int t) { tr[k].l=s;tr[k].r=t; if(s==t){ tr[k].sum=1; return; } int mid=(s+t)>>1; build(k<<1,s,mid);build(k<<1|1,mid+1,t); tr[k].sum=tr[k<<1].sum+tr[k<<1|1].sum; } void update(int k,int s,int t) { if(tr[k].tag){tr[k].sum=0;tr[k<<1].tag=tr[k<<1|1].tag=1;return;} int l=tr[k].l,r=tr[k].r; if(s==l&&t==r){ tr[k].tag=1; tr[k].sum=0; return; } int mid=(l+r)>>1; if(t<=mid)update(k<<1,s,t); else if(s>mid)update(k<<1|1,s,t); else{ update(k<<1,s,mid); update(k<<1|1,mid+1,t); } tr[k].sum=tr[k<<1].sum+tr[k<<1|1].sum; } int main() { scanf("%d %d",&n,&m); build(1,1,n); for(int i=1;i<=m;i++){ int l,r; scanf("%d %d",&l,&r); update(1,l,r); printf("%d\n",tr[1].sum); } return 0; }