#include <bits/stdc++.h>
using namespace std;
int n, Q;
int it[2500011], border[2500011];
bool lazy[2500011];
vector<int> d;
int q[300111][3];
inline void update2(int l, int r, int p) {
  lazy[p] = 0;
  if (l == r) return;
  int np = p << 1, mid = (l + r) >> 1;
  lazy[np] = lazy[np + 1] = 1;
  if (it[p] - border[p]) {
    it[np] = (d[mid] - d[l] + 1);
    it[np + 1] = (d[r] - d[mid + 1] + 1);
    border[np + 1] = d[mid + 1] - d[mid] - 1;
  } else {
    it[np] = it[np + 1] = 0;
    border[np + 1] = 0;
  }
  border[np] = border[p];
  it[np] = it[np] + border[np];
  it[np + 1] = it[np + 1] + border[np + 1];
}
inline int get(int l, int r, int u, int v, int p) {
  if (v < l || u > r) return 0;
  if (u <= l && r <= v) return it[p];
  if (lazy[p]) update2(l, r, p);
  int mid = (l + r) >> 1, np = p << 1;
  return get(l, mid, u, v, np) + get(mid + 1, r, u, v, np + 1);
}
inline void update(int l, int r, int u, int v, int val, int p) {
  if (v < l || u > r) return;
  if (lazy[p]) update2(l, r, p);
  if (u <= l && r <= v) {
    if (u < l) {
      if (l)
        if (val)
          border[p] = (d[l] - d[l - 1] - 1);
        else
          border[p] = 0;
    }
    if (val)
      it[p] = (d[r] - d[l] + 1) + border[p];
    else
      it[p] = border[p];
    lazy[p] = 1;
    return;
  }
  int mid = (l + r) >> 1, np = p << 1;
  update(l, mid, u, v, val, np);
  update(mid + 1, r, u, v, val, np + 1);
  it[p] = it[np] + it[np + 1];
  border[p] = border[np];
}
int main() {
  scanf("%d %d", &n, &Q);
  d.push_back(1);
  d.push_back(n);
  for (int i = 0; i < Q; i++) {
    int l, r, k;
    scanf("%d %d %d", &l, &r, &k);
    k -= 1;
    d.push_back(l);
    d.push_back(r);
    q[i][0] = l;
    q[i][1] = r;
    q[i][2] = k;
  }
  sort(d.begin(), d.end());
  d.resize(unique(d.begin(), d.end()) - d.begin());
  for (int i = 0; i < Q; i++) {
    q[i][0] = lower_bound(d.begin(), d.end(), q[i][0]) - d.begin();
    q[i][1] = lower_bound(d.begin(), d.end(), q[i][1]) - d.begin();
  }
  int N = d.size();
  update(0, N - 1, 0, N - 1, 1, 1);
  for (int i = 0; i < Q; i++) {
    int u, v, val;
    u = q[i][0];
    v = q[i][1];
    val = q[i][2];
    update(0, N - 1, u, v, val, 1);
    printf("%d\n", get(0, N - 1, 0, N - 1, 1));
  }
  return 0;
}
