#include <bits/stdc++.h>
// #define int long long
#define LL long long
#define IOS ios::sync_with_stdio(false), cin.tie(0), cout.tie(0)
using namespace std;
const int N = 3e4 + 10;
int n, m;
bool st[N];
struct E
{
int l, r, t;
//右端点排序能使上个区间种下的树成为下个区间的种的树(至少不会浪费)
bool operator< (const E& w) const
{
return r < w.r;
}
}e[N];
signed main()
{
IOS;
cin >> n >> m;
for (int i = 1; i <= m; i ++ )
{
cin >> e[i].l >> e[i].r >> e[i].t;
}
sort(e + 1, e + m + 1);
int res = 0;
for (int i = 1; i <= m; i ++ )
{
int sum = 0;
for (int j = e[i].l; j <= e[i].r; j ++ ) //看下这个区间有多少树
{
if (st[j]) sum ++ ;
}
if (sum < e[i].t) //树不够
{
for (int j = e[i].r; j >= e[i].l; j -- ) //从后面开始种
{
if (!st[j])
{
st[j] = true;
res ++ ;
sum ++ ;
if (sum == e[i].t) break;
}
}
}
}
cout << res << endl;
return 0;
}