#include <bits/stdc++.h>
using namespace ::std;
const int maxn = 6e5 + 500;
const int mod = 1e9 + 7;
const int inf = 1e9 + 500;
int seg[maxn * 4];
char lazy[maxn * 4];
int c[maxn];
int tol[maxn * 4];
void shift(int node) {
  if (lazy[node] == 1) {
    seg[2 * node] = 0;
    seg[2 * node + 1] = 0;
    lazy[2 * node] = 1;
    lazy[2 * node + 1] = 1;
  }
  if (lazy[node] == 2) {
    seg[2 * node] = tol[2 * node];
    seg[2 * node + 1] = tol[2 * node + 1];
    lazy[2 * node] = 2;
    lazy[2 * node + 1] = 2;
  }
  lazy[node] = 0;
}
int l, r;
bool v;
void update(int L, int R, int node) {
  if (l <= L && R <= r) {
    if (v) {
      seg[node] = tol[node];
      lazy[node] = 1LL + v;
    } else {
      seg[node] = 0;
      lazy[node] = 1LL + v;
    }
    return;
  }
  if (R <= l || r <= L) {
    return;
  }
  int mid = (L + R) / 2;
  shift(node);
  update(L, mid, 2 * node);
  update(mid, R, 2 * node + 1);
  seg[node] = seg[2 * node] + seg[2 * node + 1];
}
int que[maxn / 2][3];
void bild(int l, int r, int node) {
  if (l + 1 == r) {
    tol[node] = c[l];
    return;
  }
  int mid = (l + r) / 2;
  bild(l, mid, 2 * node);
  bild(mid, r, 2 * node + 1);
  tol[node] = tol[2 * node] + tol[2 * node + 1];
}
int main() {
  int n, q;
  scanf("%i%i", &n, &q);
  vector<int> vec;
  vec.push_back(0LL);
  vec.push_back(n);
  for (int i = 0; i < q; i++) {
    int v, l, r;
    scanf("%i%i%i", &l, &r, &v);
    l--;
    r--;
    vec.push_back(l);
    vec.push_back(r + 1);
    que[i][0] = v;
    que[i][1] = l;
    que[i][2] = r + 1;
  }
  sort(vec.begin(), vec.end());
  vec.resize(unique(vec.begin(), vec.end()) - vec.begin());
  for (int i = 1; i < vec.size(); i++) {
    c[i - 1] = vec[i] - vec[i - 1];
  }
  int y = vec.size() - 1;
  bild(0, y, 1);
  l = 0;
  r = y;
  v = 1;
  update(0, y, 1);
  for (int i = 0; i < q; i++) {
    l = lower_bound(vec.begin(), vec.end(), que[i][1]) - vec.begin();
    r = lower_bound(vec.begin(), vec.end(), que[i][2]) - vec.begin();
    if (que[i][0] == 1) {
      v = 0;
      update(0, y, 1);
    } else {
      v = 1;
      update(0, y, 1);
    }
    printf("%i\n", seg[1]);
  }
}
