#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include //#include using namespace std; //using namespace atcoder; #define repr(i, a, b) for (int i = (int)(a); i < (int)(b); i++) #define rep(i, n) repr(i, 0, n) #define INF 2e9 //#define MOD 1000000007 #define MOD 998244353 #define LINF (long long)4e18 #define jck 3.141592 #define PI acos(-1.0) const double EPS = 1e-18; using ll = long long; using Pi = pair; using Pl = pair; //using mint = modint998244353; int dh[] = {-1,1,0,0}; int dw[] = {0,0,1,-1}; template vector compress(vector &v){ vector res = v; sort(res.begin(),res.end()); res.erase(unique(res.begin(),res.end()),res.end()); for(auto &u : v){u = lower_bound(res.begin(),res.end(),u)-res.begin();} return res; } int main(){ int n,q; cin >> n >> q; vector l(q),r(q),c(q); rep(i,q){ cin >> l[i] >> r[i] >> c[i]; l[i]--; r[i]--; } vector b = c; compress(b); vector re(q); rep(i,q) re[b[i]] = c[i]; vector> que(q); rep(i,q){ que[b[i]].push_back({l[i],r[i]}); } vector ans(n,1000000000); set st; rep(i,n) st.insert(i); for(int i = q-1; i >= 0; i--){ for(auto [l2,r2] : que[i]){ auto p = st.lower_bound(l2); auto p2 = st.lower_bound(r2+1); if(p == p2){ cout << -1 << endl; return 0; } } for(auto [l2,r2] : que[i]){ auto p = st.lower_bound(l2); auto p2 = st.lower_bound(r2+1); if(p == p2) continue; while(p != p2){ ans[*p] = re[i]; p = st.erase(p); } } } rep(i,n){ cout << ans[i]; if(i != n-1) cout << " "; } cout << endl; }