#include <bits/stdc++.h>
using namespace std;
constexpr int N = 3e5;
int t[4 * N], lz[4 * N];
bool has[4 * N];
void push(int id, int tl, int tr) {
if (tl == tr || !has[id]) {
return;
}
int x = (id << 1) + 1, y = x + 1, tm = (tl + tr) >> 1;
t[x] = max(t[x], lz[id]);
t[y] = max(t[y], lz[id]);
lz[x] = max(lz[x], lz[id]);
lz[y] = max(lz[y], lz[id]);
has[x] = has[y] = 1;
has[id];
lz[id] = -2e9;
}
void update(int id, int tl, int tr, int l, int r, int k) {
push(id, tl, tr);
if (r < tl || tr < l) return;
if (l <= tl && tr <= r) {
has[id] = 1;
lz[id] = max(lz[id], k);
t[id] = max(t[id], k);
push(id, tl, tr);
return;
}
int x = (id << 1) + 1, y = x + 1, tm = (tl + tr) >> 1;
update(x, tl, tm, l, r, k);
update(y, tm + 1, tr, l, r, k);
t[id] = max(t[x], t[y]);
}
int get(int id, int tl, int tr, int i) {
push(id, tl, tr);
if (tl == tr) {
return t[id];
}
int x = (id << 1) + 1, y = x + 1, tm = (tl + tr) >> 1;
if (i <= tm) {
return get(x, tl, tm, i);
} else {
return get(y, tm + 1, tr, i);
}
}
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int n, m;
cin >> n >> m;
fill(lz, lz + 4 * N, -2e9);
fill(t, t + 4 * N, -2e9);
while (m--) {
int l, r, x;
cin >> l >> r >> x;
l--; r--;
update(0, 0, n - 1, l, r, x - l);
}
for (int i = 0; i < n; i++) {
cout << max(0, get(0, 0, n - 1, i) + i) << ' ';
}
cout << '\n';
return 0;
}