#include <bits/stdc++.h>
using namespace std;
int n, q;
int k, l, r;
struct aux {
  int l, r, v;
  bool operator<(const aux &x) const { return l < x.l; }
};
set<aux> S;
int NR = 0;
aux v[100005];
int main() {
  scanf("%d", &n);
  S.insert({1, n, 2});
  scanf("%d", &q);
  int Sol = n;
  for (int i = 1; i <= q; ++i) {
    scanf("%d%d%d", &l, &r, &k);
    set<aux>::iterator it = S.lower_bound({l, 0, 0});
    if (it != S.begin()) --it;
    NR = 0;
    while (it != S.end()) {
      set<aux>::iterator nxt = next(it);
      if (it->r < l) {
        it = nxt;
        continue;
      }
      if (it->l > r) break;
      int al = it->l, ar = it->r, av = it->v;
      S.erase(it);
      it = nxt;
      int nr = ar - al + 1;
      if (al < l) {
        v[++NR] = {al, l - 1, av};
        nr = nr - (l - al);
      }
      if (ar > r) {
        v[++NR] = {r + 1, ar, av};
        nr = nr - (ar - r);
      }
      if (av != k) {
        if (k == 1)
          Sol -= nr;
        else
          Sol += nr;
      }
    }
    for (int j = 1; j <= NR; ++j) S.insert(v[j]);
    S.insert({l, r, k});
    printf("%d\n", Sol);
  }
  return 0;
}
