#pragma GCC optimize("Ofast") #include #include #include #include using namespace std; int main() { int n, m; cin >> n >> m; vector>> g(n); vector cnt(n); for (int i = 0; i < m; ++i) { int l, r, k; cin >> l >> r >> k; if (r - l + 1 < k) { cout << "No" << endl; return 0; } --k; --l, --r; ++cnt[r]; g[r].push_back({l, -k}); } for (int i = 0; i < n - 1; ++i) { g[i].push_back({i + 1, 1}); g[i + 1].push_back({i, 0}); } vector dis(n, 1e9); priority_queue> pq; pq.push({0, n - 1}); while (!pq.empty()) { auto [d, now] = pq.top(); d = -d; pq.pop(); if (dis[now] <= d) continue; dis[now] = d; for (auto [to, c] : g[now]) { int tmp = dis[now] + c; if (tmp < dis[to]) pq.push({-tmp, to}); } } for (int i = 0; i < n; ++i) { for (int j = 0; j < cnt[i]; ++j) { auto [to, c] = g[i][j]; if (dis[i] - dis[to] < c) { cout << "No" << endl; return 0; } } } cout << "Yes" << endl; vector ans(n); ans[0] = 1; for (int i = 1; i < n; ++i) ans[i] = dis[i] - dis[i - 1] + ans[i - 1]; for (int i = 0; i < n; ++i) cout << ans[i] << " \n"[i == n - 1]; }