CF915E
#include<bits/stdc++.h>
#define rint register int
#define itt set<odt>::iterator
using namespace std;
int n,m,cnt;
struct odt{
int l,r;
mutable int v;
bool operator < (const odt &a)const{
return l<a.l;
}
odt(int _l=0,int _r=0,int _v=0):l(_l),r(_r),v(_v){}
};
inline int read(){
char ch=getchar();int res=0;
while(!(ch>='0'&&ch<='9'))ch=getchar();
while(ch>='0'&&ch<='9')res=(res<<3)+(res<<1)+(ch^48),ch=getchar();
return res;
}
set<odt>t;
inline itt sp(int x){
itt it =t.lower_bound(odt(x));
if(it!=t.end()&&it->l==x)return it;
it--;int l=it->l,r=it->r,v=it->v;
t.erase(it);t.insert(odt(l,x-1,v));
return t.insert(odt(x,r,v)).first;
}
inline void ass(int l,int r,int v){
itt itr=sp(r+1),itl=sp(l);
t.erase(itl,itr);t.insert(odt(l,r,v));
return;
}
inline int sum(int l,int r){
int res=0;
itt itr=sp(r+1),itl=sp(l);
for(itt i=itl;i!=itr;i++){
if(i->v)res+=i->r-i->l+1;
}
return res;
}
int main(){
n=read();m=read();
t.insert(odt(1,n,1));
for(rint i=1,op,x,y;i<=m;i++){
x=read();
y=read();
op=read();
if(op&1)ass(x,y,0);
else ass(x,y,1);
printf("%d\n",sum(1,n));
}
return 0;
}