#include<bits/stdc++.h>
#define ll long long int
#define M 1000000007
#define mod 998244353
#define mp(x,y) make_pair(x,y)
#define pb(x) push_back(x)
#define pi pair<ll,ll>
#define endl "\n"
using namespace std;
const ll N=200010;

ll st_r[4*N],lz_r[4*N];
ll st_c[4*N],lz_c[4*N];
ll n;

void updaterange_r(ll be,ll en,ll pos,ll l,ll r,ll v)
{
    if(lz_r[pos]!=N)
    {
        st_r[pos]=min(st_r[pos],lz_r[pos]);
        if(be!=en)
        {
            lz_r[2*pos+1]=min(lz_r[2*pos+1],lz_r[pos]);
            lz_r[2*pos+2]=min(lz_r[2*pos+2],lz_r[pos]);
        }
        lz_r[pos]=N;
    }
    if(be>r||en<l){return;}
    if(be>=l&&en<=r)
    {
        st_r[pos]=min(st_r[pos],v);
        if(be!=en)
        {
            lz_r[2*pos+1]=min(lz_r[2*pos+1],v);
            lz_r[2*pos+2]=min(lz_r[2*pos+2],v);
        }
        return;
    }
    ll m=(be+en)/2;
    updaterange_r(be,m,2*pos+1,l,r,v);
    updaterange_r(m+1,en,2*pos+2,l,r,v);
    st_r[pos]=min(st_r[2*pos+1],st_r[2*pos+2]);
}

ll query_r(ll be,ll en,ll pos,ll l,ll r)
{
    if(lz_r[pos]!=N)
    {
        st_r[pos]=min(st_r[pos],lz_r[pos]);
        if(be!=en)
        {
            lz_r[2*pos+1]=min(lz_r[2*pos+1],lz_r[pos]);
            lz_r[2*pos+2]=min(lz_r[2*pos+2],lz_r[pos]);
        }
        lz_r[pos]=N;
    }
    if(be>r||en<l){return(n-1);}
    if(be>=l&&en<=r)
    {
        return(st_r[pos]);
    }
    ll m=(be+en)/2;
    ll p1=query_r(be,m,2*pos+1,l,r);
    ll p2=query_r(m+1,en,2*pos+2,l,r);
    return min(p1,p2);
}







void updaterange_c(ll be,ll en,ll pos,ll l,ll r,ll v)
{
    if(lz_c[pos]!=N)
    {
        st_c[pos]=min(st_c[pos],lz_c[pos]);
        if(be!=en)
        {
            lz_c[2*pos+1]=min(lz_c[2*pos+1],lz_c[pos]);
            lz_c[2*pos+2]=min(lz_c[2*pos+2],lz_c[pos]);
        }
        lz_c[pos]=N;
    }
    if(be>r||en<l){return;}
    if(be>=l&&en<=r)
    {
        st_c[pos]=min(st_c[pos],v);
        if(be!=en)
        {
            lz_c[2*pos+1]=min(lz_c[2*pos+1],v);
            lz_c[2*pos+2]=min(lz_c[2*pos+2],v);
        }
        return;
    }
    ll m=(be+en)/2;
    updaterange_c(be,m,2*pos+1,l,r,v);
    updaterange_c(m+1,en,2*pos+2,l,r,v);
    st_c[pos]=min(st_c[2*pos+1],st_c[2*pos+2]);
}

ll query_c(ll be,ll en,ll pos,ll l,ll r)
{
    if(lz_c[pos]!=N)
    {
        st_c[pos]=min(st_c[pos],lz_c[pos]);
        if(be!=en)
        {
            lz_c[2*pos+1]=min(lz_c[2*pos+1],lz_c[pos]);
            lz_c[2*pos+2]=min(lz_c[2*pos+2],lz_c[pos]);
        }
        lz_c[pos]=N;
    }
    if(be>r||en<l){return(n-1);}
    if(be>=l&&en<=r)
    {
        return(st_c[pos]);
    }
    ll m=(be+en)/2;
    ll p1=query_c(be,m,2*pos+1,l,r);
    ll p2=query_c(m+1,en,2*pos+2,l,r);
    return min(p1,p2);
}

int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);

    ll q;
    cin>>n>>q;

    for(ll i=0;i<4*N;++i){
        lz_r[i]=lz_c[i]=N;
        st_r[i]=st_c[i]=n-1;
    }

    ll ans=(n-2)*(n-2);

    while(q--){
        ll t,x;
        cin>>t>>x;
        --x;
        if(t==1){
            ll idx=query_r(0,n-1,0,x,x);
            ans-=(idx-1);
            updaterange_c(0,n-1,0,1,idx-1,x);
        }
        else{
            ll idx=query_c(0,n-1,0,x,x);
            ans-=(idx-1);
            updaterange_r(0,n-1,0,1,idx-1,x);
        }
    }
    cout<<ans;

    return (0);
}


Measured memory_bytes: 28628