#include <bits/stdc++.h>
#pragma GCC optimize("O3")
#pragma GCC optimize("Ofast")
#pragma GCC optimization("unroll-loops")
#pragma GCC target("avx,avx2,fma")
using namespace std;
using namespace std;
const int mn = 1 << 21;
vector<int> range;
class _st {
 public:
  int size;
  long long tree[mn], la[mn];
  _st() {
    size = mn >> 1;
    fill(tree, tree + mn, 0);
    fill(la, la + mn, -1);
  }
  void init() {
    for (int i = size - 1; i > 0; i--)
      tree[i] = tree[i << 1] + tree[(i << 1) + 1];
  }
  void pro(int nl, int nr, int n) {
    if (la[n] == -1) return;
    if (n < size) {
      la[n << 1] = la[n];
      la[(n << 1) + 1] = la[n];
    }
    tree[n] = range[nr] - range[nl];
    tree[n] *= la[n];
    la[n] = -1;
  }
  long long sum(int nl, int nr, int n, int l, int r) {
    pro(nl, nr, n);
    if (r <= nl | l >= nr) return 0;
    if (r >= nr & l <= nl) return tree[n];
    int m = (nl + nr) / 2;
    return sum(nl, m, n << 1, l, r) + sum(m, nr, (n << 1) + 1, l, r);
  }
  void add(int nl, int nr, int n, int l, int r, int k) {
    pro(nl, nr, n);
    if (r <= nl | l >= nr) return;
    if (r >= nr & l <= nl) {
      la[n] = k;
      pro(nl, nr, n);
      return;
    }
    int m = (nl + nr) / 2;
    add(nl, m, n << 1, l, r, k);
    add(m, nr, (n << 1) + 1, l, r, k);
    tree[n] = tree[n << 1] + tree[(n << 1) + 1];
  }
  long long sum(int l, int r) { return sum(0, size, 1, l, r); }
  void add(int l, int r, int k) { add(0, size, 1, l, r, k); }
};
_st st;
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(nullptr);
  int n, q;
  cin >> n >> q;
  range.resize(2 * q + 2);
  vector<int> l(q), r(q), k(q);
  for (int i = 0; i < q; i++) {
    int a, b, c;
    cin >> a >> b >> c;
    l[i] = a;
    r[i] = b + 1;
    k[i] = c;
    range[i * 2] = a;
    range[i * 2 + 1] = b + 1;
  }
  range[2 * q] = 1;
  range[2 * q + 1] = n + 1;
  sort(range.begin(), range.end());
  range.erase(unique(range.begin(), range.end()), range.end());
  int sn = range.size();
  for (int i = 0; i + 1 < sn; i++)
    st.tree[i + st.size] = range[i + 1] - range[i];
  st.init();
  for (int i = 0; i < q; i++) {
    int lp =
        (int)(lower_bound(range.begin(), range.end(), l[i]) - range.begin());
    int rp =
        (int)(lower_bound(range.begin(), range.end(), r[i]) - range.begin());
    st.add(lp, rp, k[i] - 1);
    cout << st.sum(0, sn - 1) << "\n";
  }
  cin >> n;
}
