#include <bits/stdc++.h>
using namespace std;
struct input {
  int l;
  int r;
  int x;
};
input in[100007];
int a[32][100007 * 4];
int c[32];
bool flag;
void init() {
  c[1] = 1;
  for (int i = 2; i < 32; i++) {
    c[i] = c[i - 1] * 2;
  }
}
void build(int l, int r, int tt, int ra) {
  a[ra][tt] = 0;
  if (l == r) {
    return;
  }
  int mid = (l + r) / 2;
  build(l, mid, tt * 2, ra);
  build(mid + 1, r, tt * 2 + 1, ra);
}
void update(int l, int r, int tt, int ll, int rr, int x) {
  if (l == ll && r == rr) {
    for (int i = 1; i < 32; i++) {
      if (x & 1) a[i][tt] = 1;
      x /= 2;
    }
    return;
  }
  int mid = (ll + rr) / 2;
  if (l > mid) {
    update(l, r, tt * 2 + 1, mid + 1, rr, x);
  } else if (r <= mid) {
    update(l, r, tt * 2, ll, mid, x);
  } else {
    update(l, mid, tt * 2, ll, mid, x);
    update(mid + 1, r, tt * 2 + 1, mid + 1, rr, x);
  }
}
int make(int l, int r, int tt, int ll, int rr, int ra) {
  if (a[ra][tt] == 1) return 0;
  if (l == ll && r == rr) {
    if (a[ra][tt] == 0) return 1;
    return 0;
  }
  int mid = (ll + rr) / 2;
  if (l > mid) {
    return make(l, r, tt * 2 + 1, mid + 1, rr, ra);
  } else if (r <= mid) {
    return make(l, r, tt * 2, ll, mid, ra);
  } else {
    return make(l, mid, tt * 2, ll, mid, ra) |
           make(mid + 1, r, tt * 2 + 1, mid + 1, rr, ra);
  }
}
int query(int x, int l, int r, int tt, int ra) {
  if (a[ra][tt] == 1) return c[ra];
  if (l == r) {
    return 0;
  } else {
    int mid = (l + r) / 2;
    if (x > mid)
      return query(x, mid + 1, r, tt * 2 + 1, ra);
    else
      return query(x, l, mid, tt * 2, ra);
  }
}
int main() {
  int n, m;
  int l, r, x;
  init();
  flag = true;
  scanf("%d%d", &n, &m);
  for (int i = 0; i < m; i++) {
    scanf("%d%d%d", &l, &r, &x);
    in[i].l = l;
    in[i].r = r;
    in[i].x = x;
    update(l, r, 1, 1, n, x);
  }
  for (int i = 0; i < m; i++) {
    for (int j = 1; j < 32; j++) {
      if ((in[i].x & 1) == 0) {
        if (make(in[i].l, in[i].r, 1, 1, n, j) == 0) {
          flag = false;
        }
      }
      in[i].x /= 2;
    }
  }
  if (flag) {
    puts("YES");
    for (int i = 1; i <= n; i++) {
      int ans = 0;
      for (int j = 1; j < 32; j++) {
        ans += query(i, 1, n, 1, j);
      }
      printf("%d ", ans);
    }
  } else
    puts("NO");
  return 0;
}
