#include <bits/stdc++.h>
using namespace std;
int init[100000], d[100000], d2[100000];
bool used[100000];
int l[100000], r[100000], xx[100000], type[100000];
int main() {
  int n, m;
  scanf("%d %d", &n, &m);
  for (int j = 0, _n = m; j < _n; j++) {
    scanf("%d %d %d %d", type + j, l + j, r + j, xx + j);
    l[j]--;
    r[j]--;
    if (type[j] == 1) {
      for (int i = l[j], _n = r[j] + 1; i < _n; i++) d[i] += xx[j];
    } else if (type[j] == 2) {
      for (int i = l[j], _n = r[j] + 1; i < _n; i++) {
        if (!used[i]) {
          used[i] = true;
          init[i] = xx[j] - d[i];
        } else if (init[i] + d[i] > xx[j])
          init[i] = xx[j] - d[i];
      }
    }
  }
  bool ok = true;
  for (int j = 0, _n = m; j < _n; j++) {
    if (type[j] == 1) {
      for (int i = l[j], _n = r[j] + 1; i < _n; i++) d2[i] += xx[j];
    } else if (type[j] == 2) {
      int mxx = -1000000000;
      for (int i = l[j], _n = r[j] + 1; i < _n; i++) {
        mxx = max(mxx, init[i] + d2[i]);
      }
      if (mxx != xx[j]) ok = false;
    }
  }
  if (ok) {
    printf("YES\n");
    for (int i = 0, _n = n; i < _n; i++) printf("%d ", init[i]);
    printf("\n");
  } else
    printf("NO\n");
  return 0;
}
