#include <bits/stdc++.h>
using namespace std;
std::mt19937 rng(
    (int)std::chrono::steady_clock::now().time_since_epoch().count());
struct cmp {
  bool operator()(pair<int, int> a, pair<int, int> b) {
    return a.second < b.second;
  }
};
set<pair<int, int>, cmp> st;
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  int n, m;
  cin >> n >> m;
  int ans = n;
  for (int i = 0; i < m; i++) {
    int a, b, op;
    cin >> a >> b >> op;
    if (op == 1) {
      auto p = st.upper_bound({0, a - 1});
      if ((p == st.end()) or (p->first > b)) {
        ans -= (b - a + 1);
        st.insert({a, b});
      } else {
        int x = p->first;
        int y = p->second;
        ans += (y - x + 1);
        p = st.erase(p);
        a = min(x, a);
        b = max(y, b);
        while ((p != st.end()) and (p->first <= b)) {
          x = p->first;
          y = p->second;
          ans += (y - x + 1);
          a = min(x, a);
          b = max(y, b);
          p = st.erase(p);
        }
        ans -= (b - a + 1);
        st.insert({a, b});
      }
    } else {
      auto p = st.upper_bound({0, a - 1});
      if ((p == st.end()) or (p->first > b)) {
      } else {
        int x = p->first;
        int y = p->second;
        ans += (y - x + 1);
        p = st.erase(p);
        if (x <= (a - 1)) {
          ans -= (a - x);
          st.insert({x, a - 1});
        }
        if ((b + 1) <= y) {
          ans -= (y - b);
          st.insert({b + 1, y});
        }
        while ((p != st.end()) and (p->first <= b)) {
          x = p->first;
          y = p->second;
          ans += (y - x + 1);
          if (y > b) {
            ans -= (y - b);
            st.erase(p);
            st.insert({b + 1, y});
            break;
          } else {
            p = st.erase(p);
          }
        }
      }
    }
    cout << ans << '\n';
  }
  return 0;
}
