#include<bits/stdc++.h>
#define mid (l+r)/2
#define int long long
using namespace std;
int n,Q,p,q,seg[2][800001],ans;
void segadd(int nu,int u,int l,int r,int nl,int nr,int np){
	if(l>nr||r<nl)return;
	else if(l>=nl&&r<=nr){
		seg[nu][u]=min(seg[nu][u],np);
		return;
	}else{
		segadd(nu,u*2,l,mid,nl,nr,np),segadd(nu,u*2+1,mid+1,r,nl,nr,np);
		return;
	}
}
int segreq(int nu,int u,int l,int r,int np,int nx){
	if(l==r){
		return min(nx,seg[nu][u]);
	}else{
		if(np<=mid)return segreq(nu,u*2,l,mid,np,min(nx,seg[nu][u]));
		else return segreq(nu,u*2+1,mid+1,r,np,min(nx,seg[nu][u]));
	}
}
signed main(){
	cin>>n>>Q;
	for(int i=1;i<=4*n;i++)seg[0][i]=seg[1][i]=n;ans=(n-2)*(n-2);
	for(int i=1;i<=Q;i++){
		cin>>p>>q;
		if(p==1){
			int np=segreq(0,1,1,n,q,n);ans-=np-2;
			segadd(1,1,1,n,1,np-1,q);
		}else if(p==2){
			int np=segreq(1,1,1,n,q,n);ans-=np-2;
			segadd(0,1,1,n,1,np-1,q);
		}
	}
	printf("%lld\n",ans);
	return 0;
}
/*
100 4 17
10 4 7
*/