#include <bits/stdc++.h>
using namespace std;
#pragma GCC optimize("O2,no-stack-protector,unroll-loops,fast-math")
const int maxn = 3e5 + 10, maxm = 1e3 + 10, lg = 21, mod = 1e9 + 7, inf = 1e18;
int n, m, a[maxn], smx[maxn << 2], smn[maxn << 2], T[maxn], L[maxn], R[maxn],
    V[maxn];
bool mk[maxn];
void umx(int id, int x) {
  for (smx[id += n] = x; id > 1; id >>= 1)
    smx[id >> 1] = max(smx[id], smx[id ^ 1]);
}
int gmx(int l, int r) {
  int ret = -inf;
  for (l += n, r += n; l < r; l >>= 1, r >>= 1) {
    if (l & 1) ret = max(smx[l++], ret);
    if (r & 1) ret = max(ret, smx[--r]);
  }
  return ret;
}
void umn(int l, int r, int x) {
  for (l += n, r += n; l < r; l >>= 1, r >>= 1) {
    if (l & 1) smn[l] = min(smn[l], x), l++;
    if (r & 1) --r, smn[r] = min(smn[r], x);
  }
}
int gmn(int id) {
  int ret = inf;
  for (id += n; id >= 1; id >>= 1) ret = min(ret, smn[id]);
  return ret;
}
int main() {
  ios_base::sync_with_stdio(0), cin.tie(0), cout.tie(0);
  for (int i = 0; i < (maxn << 2); i++) smn[i] = mod;
  cin >> n >> m;
  for (int i = 0; i < m; i++) {
    cin >> T[i] >> L[i] >> R[i];
    L[i]--;
    if (T[i] == 1) {
      cin >> V[i];
      umn(L[i], R[i], V[i]);
    } else {
      if (!mk[L[i]]) a[L[i]] = gmn(L[i]);
      mk[L[i]] = 1;
    }
  }
  for (int i = 0; i < n; i++)
    if (!mk[i]) a[i] = gmn(i);
  for (int i = 0; i < n; i++) umx(i, a[i]);
  for (int i = 0; i < m; i++) {
    if (T[i] == 1) {
      if (gmx(L[i], R[i]) != V[i]) return cout << "NO", 0;
    } else
      umx(L[i], R[i]);
  }
  vector<int> vv;
  set<int> ss;
  for (int i = 0; i < n; i++) {
    if (a[i] == mod)
      vv.push_back(i);
    else {
      if (ss.count(a[i])) {
        int p = 1;
        while (p <= a[i]) p = p * 2 + 1;
        a[i] = p / 2;
      } else
        ss.insert(a[i]);
    }
  }
  if ((int)(vv.size()) >= 2) {
    a[vv[0]] = (1 << 29);
    a[vv[1]] = (1 << 29) - 1;
    for (int i = 2; i < (int)(vv.size()); i++) a[vv[i]] = 0;
  } else if ((int)(vv.size()) == 1) {
    int mm = 0, id = vv[0];
    for (int i = 0; i < n; i++)
      if (i != id) mm |= a[i];
    a[id] = 0;
    for (int i = 29; i >= 0; i--)
      if ((mm >> i & 1) == 0)
        if (a[id] + (1 << i) <= mod - 7) a[id] += (1 << i);
  }
  cout << "YES\n";
  for (int i = 0; i < n; i++) cout << a[i] << ' ';
  return 0;
}
