#include <bits/stdc++.h>
using namespace std;
typedef long long ll;

// マクロ
// forループ
#define REP(i,n) for(ll i=0;i<(ll)(n);i++)
#define REPD(i,n) for(ll i=n-1;i>=0;i--)
#define FOR(i,a,b) for(ll i=(a);i<=(ll)(b);i++)
#define FORD(i,a,b) for(ll i=(a);i>=(ll)(b);i--)
// xにはvectorなどのコンテナ
#define ALL(x) (x)begin(),(x).end()
#define SIZE(x) ((ll)(x).size())
#define MAX(x) *max_element(ALL(x))
#define MIN(x) *min_element(ALL(x))
// 出力
#define PRINT(x) cout<<(x)<<endl
#define PRINTA(x,n) REP(i,n)PRINT(x[i])
// 定数
#define INF 1000000000000 // 10^12
#define MOD 1000000007 // 10^9+7
// 略記
#define PB push_back
#define MP make_pair

int N, M, A[500100], B[500100], X[500100];

int imos[5009][5009];

int main() {
    // 入力
    cin >> N >> M;
    REP(i, M) cin >> A[i] >> B[i] >> X[i];

    // imos を初期化する
    REP(i, 5009) {
        REP(j, 5009) {
            imos[i][j] = 0;
        }
    }

    // 左 -> 右, 右上 -> 左下, 右下 -> 左上
    REP(i, M) {
        imos[A[i]        - 1][B[i]        - 1]--;
        imos[A[i]        - 1][B[i]           ]++;
        imos[A[i] + X[i]    ][B[i] + X[i] + 1]--;
        imos[A[i] + X[i] + 1][B[i] + X[i] + 1]++;
        imos[A[i] + X[i] + 1][B[i]           ]--;
        imos[A[i] + X[i]    ][B[i]        - 1]++;
    }

    // 左 -> 右
    FOR(i, 0, N+1) {
        FOR(j, 1, i+1) {
            imos[i][j] += imos[i][j-1]; 
        }
    }
    // 右上 -> 左下
    FOR(i, 1, N+1) {
        FOR(j, 0, i+1) {
            imos[i][j] += imos[i-1][j];
        }
    }
    // 右下 -> 左上
    FORD(i, N, 0) {
        FORD(j, i, 0) {
            imos[i][j] += imos[i+1][j+1];
        }
    }

    int ans = 0;
    FOR(i, 1, N) {
        FOR(j, 1, i) {
            if (imos[i][j] > 0) ans++;
            // printf("%d ", imos[i][j]);
        }
        // printf("\n");
    }
    cout << ans << endl;
    return 0;
}
