#include <bits/stdc++.h>
using namespace std;
const int maxn = 4000005, inf = 0x3f3f3f3f;
struct SegT {
  int ch[maxn << 2][2], tag[maxn << 2], sz, sum[maxn << 2];
  void pushup(int rt) { sum[rt] = sum[ch[rt][0]] + sum[ch[rt][1]]; }
  void buildson(int rt) {
    if (!ch[rt][0]) ch[rt][0] = ++sz;
    if (!ch[rt][1]) ch[rt][1] = ++sz;
  }
  void pushdown(int l, int r, int rt) {
    if (!tag[rt]) return;
    buildson(rt);
    int lid = ch[rt][0], rid = ch[rt][1], mid = l + r >> 1;
    sum[lid] = (tag[rt] - 1) * (mid - l + 1);
    sum[rid] = (tag[rt] - 1) * (r - mid);
    tag[lid] = tag[rid] = tag[rt];
    tag[rt] = 0;
  }
  void update(int L, int R, int k, int l, int r, int rt) {
    if (L <= l && R >= r) {
      tag[rt] = k;
      sum[rt] = (k - 1) * (r - l + 1);
      return;
    }
    int mid = l + r >> 1;
    buildson(rt);
    pushdown(l, r, rt);
    if (L <= mid) update(L, R, k, l, mid, ch[rt][0]);
    if (R > mid) update(L, R, k, mid + 1, r, ch[rt][1]);
    pushup(rt);
  }
} t;
int n, q;
int main() {
  scanf("%d %d", &n, &q);
  t.update(1, n, 2, 1, n, 0);
  for (int i = 0; i < (q); ++i) {
    int l, r, k;
    scanf("%d %d %d", &l, &r, &k);
    t.update(l, r, k, 1, n, 0);
    printf("%d\n", t.sum[0]);
  }
}
