#include<bits/stdc++.h>

using namespace std;

#define fRead(x)        freopen(x,"r",stdin)
#define fWrite(x)       freopen (x,"w",stdout)

#define LL              long long
#define ULL             unsigned long long
#define ff              first
#define ss              second
#define pb              push_back
#define PI              acos(-1.0)
#define mk              make_pair
#define pii             pair<int,int>
#define pll             pair<LL,LL>


#define min3(a,b,c)     min(a,min(b,c))
#define max3(a,b,c)     max(a,max(b,c))
#define min4(a,b,c,d)   min(a,min(b,min(c,d)))
#define max4(a,b,c,d)   max(a,max(b,max(c,d)))
#define SQR(a)          ((a)*(a))
#define FOR(i,a,b)      for(int i=a;i<=b;i++)
#define ROF(i,a,b)      for(int i=a;i>=b;i--)
#define REP(i,b)        for(int i=0;i<b;i++)
#define MEM(a,x)        memset(a,x,sizeof(a))
#define ABS(x)          ((x)<0?-(x):(x))

#define SORT(v)         sort(v.begin(),v.end())
#define REV(v)          reverse(v.begin(),v.end())
#pragma GCC target ("avx2")
#pragma GCC optimization ("O2")
#pragma GCC optimization ("unroll-loops")
#pragma comment(linker, "/stack:200000000")
#pragma GCC optimize("Ofast")
#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native")
#define FastRead        ios_base::sync_with_stdio(0);cin.tie(nullptr);
#ifdef VAMP
#define debug(...) __f(#__VA_ARGS__, __VA_ARGS__)
template < typename Arg1 >
void __f(const char* name, Arg1&& arg1)
{
    cout << name << " = " << arg1 << std::endl;
}
template < typename Arg1, typename... Args>
void __f(const char* names, Arg1&& arg1, Args&&... args)
{
    const char* comma = strchr(names+1, ',');
    cout.write(names, comma - names) << " = " << arg1 <<" | ";
    __f(comma+1, args...);
}
#else
#define debug(...)
#endif

const int N = 400005;
LL row[N],col[N];
LL n , q;

int main()
{
    #ifdef VAMP
        clock_t tStart = clock();
        freopen("input.txt", "r", stdin);
        freopen("output.txt", "w", stdout);
    #endif
    cin >> n >> q;
    FOR(i,0,q)row[i] = col[i] = n;

    LL ans = SQR(n - 2);
    FOR(i,1,q){
        LL tp , x;
        cin >> tp >> x;

        if(tp == 1){
            col[i] = min(col[i - 1],x);
            row[i] = row[i - 1];

            LL lo = 0 , hi = i , mid, pre;
            while(lo <= hi){
                mid = (lo + hi) >> 1;
                if(col[mid] > x){
                    pre = mid;
                    lo = mid + 1;
                }else{
                    hi = mid - 1;
                }
            }
//            debug(row[pre] - 2);
//            assert(row[pre] - 2 < 0);
            ans = ans - (row[pre] - 2);
//            debug(row[i],col[i]);
//            debug(pre);
        }else{
            row[i] = min(row[i - 1],x);
            col[i] = col[i - 1];
            LL lo = 0 , hi = i , mid, pre;
            while(lo <= hi){
                mid = (lo + hi) >> 1;
                if(row[mid] > x){
                    pre = mid;
                    lo = mid + 1;
                }else{
                    hi = mid - 1;
                }
            }
//            debug(col[pre] - 2);
//            assert(col[pre] - 2 < 0);
            ans = ans - (col[pre] - 2);
//            debug(row[i],col[i]);
//            debug(pre);
        }

    }
    cout << ans << "\n";
    #ifdef VAMP
        fprintf(stderr, "\n>> Runtime: %.10fs\n", (long double) (clock() - tStart) / CLOCKS_PER_SEC);
    #endif
}



Measured memory_bytes: 6736