#include <bits/stdc++.h>
using namespace std;
int n, m, l, r, q;
int d[2 * 131072 + 3];
int t[1000];
vector<int> st[100007], kon[100007];
pair<pair<int, int>, int> kraw[100007];
void insert(int poz, int val) {
  poz += 131072;
  d[poz] = val;
  poz /= 2;
  while (poz) {
    d[poz] = d[poz * 2] & d[poz * 2 + 1];
    poz /= 2;
  }
}
int query(int a, int b) {
  a += 131072;
  b += 131072;
  int res = d[a] & d[b];
  while (a / 2 != b / 2) {
    if (!(a & 1)) res &= d[a + 1];
    if (b & 1) res &= d[b - 1];
    a /= 2;
    b /= 2;
  }
  return res;
}
int main() {
  scanf("%d%d", &n, &m);
  for (int i = 0; i < (m); i++) {
    scanf("%d%d%d", &l, &r, &q);
    st[l].push_back(q);
    kon[r].push_back(q);
    kraw[i] = make_pair(make_pair(l, r), q);
  }
  int akt_wyn = 0;
  for (int i = 1; i <= (n); i++) {
    for (__typeof((st[i]).begin()) it = ((st[i]).begin()); it != (st[i]).end();
         it++) {
      int x = *it;
      int poz = 0;
      while (x) {
        t[poz++] += (x & 1);
        x /= 2;
      }
    }
    akt_wyn = 0;
    for (int j = 29; j >= (0); j--) {
      akt_wyn *= 2;
      if (t[j]) ++akt_wyn;
    }
    insert(i, akt_wyn);
    for (__typeof((kon[i]).begin()) it = ((kon[i]).begin());
         it != (kon[i]).end(); it++) {
      int x = *it;
      int poz = 0;
      while (x) {
        t[poz++] -= (x & 1);
        x /= 2;
      }
    }
  }
  for (int i = 0; i < (m); i++) {
    if (query(kraw[i].first.first, kraw[i].first.second) != kraw[i].second) {
      puts("NO");
      return 0;
    }
  }
  puts("YES");
  for (int i = 1; i <= (n); i++) printf("%d ", d[i + 131072]);
  puts("");
  return 0;
}
