#include <bits/stdc++.h>
#pragma GCC optimize("Ofast")
using namespace std;
inline void read(int& s) {
  s = 0;
  static char c = getchar();
  while (c < '0' || c > '9') c = getchar();
  while (c >= '0' && c <= '9')
    s = (s << 3) + (s << 1) + (c & 15), c = getchar();
  return;
}
int qu[19];
inline void write(int s) {
  if (!s) {
    putchar('0');
    return;
  }
  int v = 0;
  while (s) qu[++v] = s % 10, s /= 10;
  while (v) putchar(qu[v--] + '0');
  return;
}
const int N = 16000000, MN = 1 << 30;
int n, Q, sum[N], l[N], lc[N], rc[N], tot;
int root, x, y, z;
inline void upd(const int v, const int L, const int R) {
  sum[v] = sum[lc[v]] + sum[rc[v]];
  return;
}
inline void pd(const int v, const int L, const int R) {
  if (~l[v]) {
    if (!lc[v]) lc[v] = ++tot, l[tot] = -1;
    if (!rc[v]) rc[v] = ++tot, l[tot] = -1;
    int mid = L + R >> 1;
    sum[lc[v]] = (mid - L + 1) * l[v];
    sum[rc[v]] = (R - mid) * l[v];
    l[lc[v]] = l[v];
    l[rc[v]] = l[v];
    l[v] = -1;
  }
  return;
}
void work(int& v, const int L, const int R) {
  if (!v) v = ++tot, l[v] = -1;
  if (L >= x && R <= y) {
    sum[v] = (R - L + 1) * z;
    l[v] = z;
    return;
  }
  pd(v, L, R);
  int mid = L + R >> 1;
  if (mid >= x) work(lc[v], L, mid);
  if (mid < y) work(rc[v], mid + 1, R);
  upd(v, L, R);
  return;
}
int main() {
  read(n);
  x = 1, y = n, z = 1;
  work(root, 1, n);
  read(Q);
  while (Q--) {
    read(x), read(y), read(z);
    --z;
    work(root, 1, n);
    write(sum[root]), putchar('\n');
  }
  return 0;
}
