#include <bits/stdc++.h>
using namespace std;
long long limMax = 1e9;
int a[5500], b[5500];
bool vis[5500];
int op[5500], lef[5500], righ[5500], res[5500];
int main() {
  int n, m;
  while (~scanf("%d%d", &n, &m)) {
    for (int i = 1; i <= n; i++) {
      vis[i] = false;
    }
    for (int i = 1; i <= m; i++) {
      scanf("%d%d%d%d", &op[i], &lef[i], &righ[i], &res[i]);
    }
    bool flag = true;
    for (int i = m; i >= 1; i--) {
      if (op[i] == 1) {
        for (int j = lef[i]; j <= righ[i]; j++) {
          if (vis[j]) {
            a[j] -= res[i];
            if (a[j] > limMax || a[j] < -limMax) {
              flag = false;
              break;
            }
          }
        }
      } else {
        int maxn = res[i];
        for (int j = lef[i]; j <= righ[i]; j++) {
          if (vis[j]) {
            a[j] = min(a[j], maxn);
          } else {
            vis[j] = true;
            a[j] = maxn;
          }
        }
      }
    }
    if (!flag) {
      puts("NO");
    } else {
      for (int i = 1; i <= n; i++) {
        if (vis[i]) b[i] = a[i];
      }
      for (int i = 1; i <= m; i++) {
        if (op[i] == 1) {
          for (int j = lef[i]; j <= righ[i]; j++) {
            b[j] += res[i];
            if (b[j] > limMax || b[j] < -limMax) {
              flag = false;
              break;
            }
          }
        } else {
          int maxn = b[lef[i]];
          for (int j = lef[i] + 1; j <= righ[i]; j++) {
            maxn = max(maxn, b[j]);
          }
          if (maxn != res[i]) {
            flag = false;
            break;
          }
        }
      }
      if (!flag) {
        puts("NO");
      } else {
        puts("YES");
        for (int i = 1; i <= n; i++) {
          if (vis[i])
            printf("%d", a[i]);
          else
            printf("%d", 1);
          printf("%c", i != n ? ' ' : '\n');
        }
      }
    }
  }
  return 0;
}
