#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 5;
const int M = 1e5 + 5;
bool dn = false;
int n;
bool check(int res[]) {
  for (int i = 1; i < n; i++) {
    if (abs(res[i] - res[i - 1]) != 1) {
      return false;
    }
  }
  cout << "YES\n";
  for (int i = 0; i < n; i++) {
    cout << res[i] << " ";
  }
  cout << endl;
  dn = true;
  return true;
}
int main() {
  ios_base::sync_with_stdio(false);
  int a, b, c, d;
  cin >> a >> b >> c >> d;
  if (a > b + 1 || d > c + 1) {
    cout << "NO\n";
    return 0;
  }
  n = a + b + c + d;
  int i, j, f;
  for (i = 0; i < 2; i++) {
    for (j = 0; j < 2; j++) {
      int ta, tb, tc, td;
      ta = a;
      tb = b;
      tc = c;
      td = d;
      int res[N];
      int id1 = 0, id2 = n - 1;
      if (i == 0) {
        if (ta > 0) {
          if (tb < ta)
            continue;
          else {
            tb -= ta;
            for (id1 = 0; id1 < 2 * ta; id1++) {
              if (id1 % 2 == 0)
                res[id1] = 1;
              else
                res[id1] = 0;
            }
          }
        }
      } else {
        if (ta > 0) {
          if (tb < ta - 1)
            continue;
          else {
            tb -= ta - 1;
            for (id1 = 0; id1 < 2 * ta - 1; id1++) {
              if (id1 % 2 == 0)
                res[id1] = 0;
              else
                res[id1] = 1;
            }
          }
        }
      }
      if (j == 0) {
        if (td > 0) {
          if (tc < td)
            continue;
          else {
            tc -= td;
            for (id2 = 0; id2 < 2 * td; id2++) {
              if (id2 % 2 == 0)
                res[n - 1 - id2] = 2;
              else
                res[n - 1 - id2] = 3;
            }
          }
        }
      } else {
        if (td > 0) {
          if (tc < td - 1)
            continue;
          else {
            tc -= td - 1;
            for (id2 = 0; id2 < 2 * td - 1; id2++) {
              if (id2 % 2 == 0)
                res[n - 1 - id2] = 3;
              else
                res[n - 1 - id2] = 2;
            }
          }
        }
      }
      if (tc == tb + 1) {
        for (int f = 0; f < tc + tb; f++) {
          if (f % 2 == 0)
            res[f + id1] = 2;
          else
            res[f + id1] = 1;
        }
        check(res);
        if (dn) return 0;
      }
      if (tb == tc + 1) {
        for (int f = 0; f < tc + tb; f++) {
          if (f % 2 == 0)
            res[f + id1] = 1;
          else
            res[f + id1] = 2;
        }
        check(res);
        if (dn) return 0;
      }
      if (tb == tc) {
        for (int f = 0; f < tc + tb; f++) {
          if (f % 2 == 0)
            res[f + id1] = 2;
          else
            res[f + id1] = 1;
        }
        check(res);
        if (dn) return 0;
        for (int f = 0; f < tc + tb; f++) {
          if (f % 2 == 0)
            res[f + id1] = 1;
          else
            res[f + id1] = 2;
        }
        check(res);
        if (dn) return 0;
      }
    }
  }
  cout << "NO\n";
  return 0;
}
