#include <iostream>
#include <cstdio>
#include <cmath>
#include <vector>
#include <map>
#include <stack>
#include <queue>
#include <algorithm>
#include <set>

#define FOR(i,a,b) for(int i=(a);i<(b);i++)
#define REP(i,j) FOR(i,0,j)
#define mp std::make_pair

const int INF = 1 << 24;
const int dx[8] = {0, 0, 1, -1, 1, 1, -1, -1}, dy[8] = {1, -1, 0, 0, 1, -1, 1, -1};

typedef unsigned long long ull;
typedef std::pair<int,int> P;

std::vector<int> map[5002];

int main(){
    int N, M;
    std::cin >> N >> M;

    REP(i, N+2){
        map[i].resize(i+3);
        std::fill(map[i].begin(), map[i].end(), 0);
    }

    REP(i, M){
        int a, b, x;
        std::cin >> a >> b >> x;
        a--; b--;

        map[a][b]         += +1;
        map[a][b+1]       += -1;
        map[a+x+1][b]     += -1;
        map[a+x+1][b+x+2] += +1;
        map[a+x+2][b+1]   += +1;
        map[a+x+2][b+x+2] += -1;
    }

    REP(i, N){
        FOR(j, 1, i+1){
            map[i][j] += map[i][j-1];
        }
    }

    // puts("-----------------------------");
    // REP(i, N){
    //     REP(j, i+1){
    //         printf("%2d, ", map[i][j]);
    //     }
    //     puts("");
    // }

    REP(i, N){
        for(int j=1;i+j<N;j++){
            map[i+j][j] += map[i+j-1][j-1];
        }
    }

    // puts("-----------------------------");
    // REP(i, N){
    //     REP(j, i+1){
    //         printf("%2d, ", map[i][j]);
    //     }
    //     puts("");
    // }

    REP(i, N){
        FOR(j, i+1, N){
            map[j][i] += map[j-1][i];
        }
    }

    // puts("-----------------------------");
    // REP(i, N){
    //     REP(j, i+1){
    //         printf("%2d, ", map[i][j]);
    //     }
    //     puts("");
    // }

    int res = 0;
    REP(i, N){
        REP(j, i+1){
            if(map[i][j] > 0){
                res++;
            }
        }
    }

    std::cout << res << std::endl;
}