//#define _GLIBCXX_DEBUG #include #include #include #include using namespace std; using namespace atcoder; using mint = modint1000000007; using ll = long long; using pii = pair; using pll = pair; using vi = vector; using vvi = vector; using vl = vector; using vvl = vector; using vb = vector; using vvb = vector; using vm = vector; using vvm = vector; using vpi = vector; using vvpi = vector; using vpl = vector; using vvpl = vector; const int inf = 1 << 30; const ll INF = 1LL << 60; #define rep(i,m,n) for (int i = m; i < (int)(n); i++) #define rrep(i,m,n) for (int i = m; i > (int)(n); i--) int op(int a, int b) {return min(a, b);} int e() {return (int)(1e9);} int main(){ int n,q; cin >> n >> q; deque event; vvi J; rep(_,0,q){ int l,r,b; cin >> l >> r >> b; --l; event.push_back({l,1,-b}); event.push_back({r,-1,-b}); J.push_back({l,r,b}); } sort(event.begin(),event.end()); set S; segtree seg(n); rep(d,0,n){ while (!event.empty() && event[0][0] <= d){ if (event[0][1] == 1) S.insert(event[0][2]); else S.erase(event[0][2]); event.pop_front(); } if (!S.empty()) seg.set(d,-*S.begin()); else seg.set(d,1); } rep(i,0,q){ int l = J[i][0], r = J[i][1], b = J[i][2]; if (seg.prod(l,r) != b){ cout << -1 << endl; return 0; } } rep(i,0,n){ cout << seg.get(i) << " "; } cout << endl; }