#include <bits/stdc++.h>
const long long Mod = 1e9 + 7;
using namespace std;
int dd[4][2] = {{1, 0}, {0, 1}, {-1, 0}, {0, -1}};
int L[15000009], R[15000009], sum[15000009], lazy[15000009];
int q, l, r, k, cnt, n;
void pushdown(int rt, int l, int r) {
  if (!L[rt]) {
    L[rt] = cnt++;
    L[L[rt]] = R[L[rt]] = 0;
  }
  if (!R[rt]) {
    R[rt] = cnt++;
    L[R[rt]] = R[R[rt]] = 0;
  }
  lazy[L[rt]] = lazy[R[rt]] = lazy[rt];
  sum[L[rt]] = lazy[rt] * ((l + r) / 2 - l + 1);
  sum[R[rt]] = lazy[rt] * (r - (l + r) / 2);
  lazy[rt] = -1;
}
void update(int &k, int l, int r, int lll, int rrr, int val) {
  if (!k) {
    k = cnt++;
    L[k] = R[k] = 0;
    sum[k] = r - l + 1;
    lazy[k] = -1;
  }
  if (l >= lll && r <= rrr) {
    sum[k] = (r - l + 1) * val;
    lazy[k] = val;
    return;
  }
  if (lazy[k] != -1) pushdown(k, l, r);
  int mid = (l + r) / 2;
  if (lll <= mid) update(L[k], l, mid, lll, rrr, val);
  if (rrr > mid) update(R[k], mid + 1, r, lll, rrr, val);
  sum[k] = (L[k] ? sum[L[k]] : ((r + l) / 2 - l + 1)) +
           (R[k] ? sum[R[k]] : (r - (r + l) / 2));
}
int main() {
  while (~scanf("%d", &n)) {
    L[1] = R[1] = L[0] = R[0] = 0;
    sum[1] = n, lazy[1] = -1, cnt = 2;
    int root = 1;
    scanf("%d", &q);
    while (q--) {
      scanf("%d%d%d", &l, &r, &k);
      if (n == 1) {
        if (k == 1)
          printf("0\n");
        else
          printf("1\n");
        continue;
      }
      update(root, 1, n, l, r, k == 2);
      printf("%d\n", sum[root]);
    }
  }
  return 0;
}
