#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int, int> ii;
const int INF = 1e9;
const ll LINF = 1e18;
const int N = 2e5 + 5;
const int Q = 2e5 + 5;
// Nhận xét: màu của a[i] sẽ là màu của truy vấn cuối cùng mà tác động lên nó
// Ví dụ: Xét a[3] và ta có các truy vấn: ..., 1 4 3, 3 4 2, 3 6 5, 1 2 3 thì màu của a[3] = 5
// => Duyệt ngược truy vấn, xét qua các ô chưa được tô màu
struct Query {
int l, r, c;
};
int n, q;
int a[N];
vector<Query> queries;
int nxt[N];
void init() {
for (int u = 1; u <= n + 1; u++) nxt[u] = u;
}
// Tìm ô v gần bên phải u nhất (tính cả u) sao cho v chưa được tô màu
int findNext(int u) {
if (nxt[u] == u) return u;
return nxt[u] = findNext(nxt[u]);
}
int ans[Q];
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
cin >> n >> q;
for (int i = 0; i < q; i++) {
int l, r, c;
cin >> l >> r >> c;
queries.push_back({l, r, c});
}
reverse(queries.begin(), queries.end());
init();
for (int i = 1; i <= n; i++) a[i] = 0;
for (Query q : queries) {
for (int i = findNext(q.l); i <= q.r; i = findNext(i + 1)) {
a[i] = q.c;
nxt[i] = findNext(i + 1);
}
}
for (int i = 1; i <= n; i++) cout << a[i] << '\n';
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+IAoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsgIAoKdHlwZWRlZiBsb25nIGxvbmcgbGw7ICAKdHlwZWRlZiBwYWlyPGludCwgaW50PiBpaTsgIAoKY29uc3QgaW50IElORiA9IDFlOTsgIApjb25zdCBsbCBMSU5GID0gMWUxODsgIAoKY29uc3QgaW50IE4gPSAyZTUgKyA1OyAKY29uc3QgaW50IFEgPSAyZTUgKyA1OyAKCi8vIE5o4bqtbiB4w6l0OiBtw6B1IGPhu6dhIGFbaV0gc+G6vSBsw6AgbcOgdSBj4bunYSB0cnV5IHbhuqVuIGN14buRaSBjw7luZyBtw6AgdMOhYyDEkeG7mW5nIGzDqm4gbsOzCi8vIFbDrSBk4bulOiBYw6l0IGFbM10gdsOgIHRhIGPDsyBjw6FjIHRydXkgduG6pW46IC4uLiwgMSA0IDMsIDMgNCAyLCAzIDYgNSwgMSAyIDMgdGjDrCBtw6B1IGPhu6dhIGFbM10gPSA1Ci8vID0+IER1eeG7h3QgbmfGsOG7o2MgdHJ1eSB24bqlbiwgeMOpdCBxdWEgY8OhYyDDtCBjaMawYSDEkcaw4bujYyB0w7QgbcOgdSAKCnN0cnVjdCBRdWVyeSB7CglpbnQgbCwgciwgYzsgICAKfTsgCgppbnQgbiwgcTsgICAKaW50IGFbTl07IAp2ZWN0b3I8UXVlcnk+IHF1ZXJpZXM7IAoKaW50IG54dFtOXTsgCgp2b2lkIGluaXQoKSB7Cglmb3IgKGludCB1ID0gMTsgdSA8PSBuICsgMTsgdSsrKSBueHRbdV0gPSB1OyAgCn0KCi8vIFTDrG0gw7QgdiBn4bqnbiBiw6puIHBo4bqjaSB1IG5o4bqldCAodMOtbmggY+G6oyB1KSBzYW8gY2hvIHYgY2jGsGEgxJHGsOG7o2MgdMO0IG3DoHUKaW50IGZpbmROZXh0KGludCB1KSB7CglpZiAobnh0W3VdID09IHUpIHJldHVybiB1OyAgCglyZXR1cm4gbnh0W3VdID0gZmluZE5leHQobnh0W3VdKTsgCn0KCmludCBhbnNbUV07IAoKaW50IG1haW4oKSB7Cglpb3M6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7IAoJY2luLnRpZShudWxscHRyKTsgCQoJY2luID4+IG4gPj4gcTsgCgoJZm9yIChpbnQgaSA9IDA7IGkgPCBxOyBpKyspIHsKCQlpbnQgbCwgciwgYzsgCgkJY2luID4+IGwgPj4gciA+PiBjOyAKCQlxdWVyaWVzLnB1c2hfYmFjayh7bCwgciwgY30pOyAKCX0KCglyZXZlcnNlKHF1ZXJpZXMuYmVnaW4oKSwgcXVlcmllcy5lbmQoKSk7IAoJCglpbml0KCk7ICAgCgoJZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKSBhW2ldID0gMDsgIAoKCWZvciAoUXVlcnkgcSA6IHF1ZXJpZXMpIHsKCQlmb3IgKGludCBpID0gZmluZE5leHQocS5sKTsgaSA8PSBxLnI7IGkgPSBmaW5kTmV4dChpICsgMSkpIHsKCQkJYVtpXSA9IHEuYzsgIAoJCQlueHRbaV0gPSBmaW5kTmV4dChpICsgMSk7IAoJCX0KCX0KCglmb3IgKGludCBpID0gMTsgaSA8PSBuOyBpKyspIGNvdXQgPDwgYVtpXSA8PCAnXG4nOyAKfQ==