#include <stdio.h>
int main()
{
int i,l,r,k,n,m,t=0;
scanf("%d %d",&n,&m);
int s[7][n+5];//s[0]数组中为空;s[1],s[4]中装和黄色(k=1)有关数据,目的是为了对黄色进行差分...以此类推
for(i=0;i<7;i++)
{
for(k=0;k<n+1;k++)
{
s[i][k]=0;
}
}//初始化数组
while(m--)
{
scanf("%d %d %d",&l,&r,&k);
s[k][l]+=1;
s[k][r+1]-=1;
} //对第k个数组进行差分
for(i=1;i<=n;i++)
{
for(k=4;k<=6;k++)
s[k][i]=s[k][i-1]+s[k-3][i];//求前缀和 ,s[k]对应一种颜色
}
for(i=1;i<=n;i++)
{
if(s[6][i]!=0)
continue; //当s[6][i]!=0说明该桶加入了红色(k=3);直接跳过该循环
if(s[4][i]!=0&&s[5][i]!=0)//判断s[4],s[5]中对应元素是否同时不为零
{
t++;
}
}
printf("%d",t);
return 0;
}