#include <bits/stdc++.h>
using namespace std;
long long a, b, c, d;
vector<long long> kq;
void add(long long &a, long long &b, long long ga, long long gb) {
  if ((kq.size() == 0 || kq.back() != ga) && b != 0 && a != 0) {
    kq.push_back(ga);
    --a;
  }
  for (int i = 1; i <= min(a, b) * 2; ++i)
    if (i % 2 == 1)
      kq.push_back(gb);
    else
      kq.push_back(ga);
  long long o = min(a, b);
  a -= o;
  b -= o;
}
void add1(long long &a, long long ga) {
  for (int i = 1; i <= a; ++i) kq.push_back(ga);
  a = min(a, 0LL);
}
void nhap() {
  cin >> a >> b >> c >> d;
  long long k = max(1LL, c - d);
  if (a + k > b) {
    long long o = min(a, b);
    for (int i = 1; i <= o * 2; ++i)
      if (i % 2 == 1)
        kq.push_back(0);
      else
        kq.push_back(1);
    a -= o;
    b -= o;
  } else {
    long long o = min(a, b);
    for (int i = 1; i <= o * 2; ++i)
      if (i % 2 == 1)
        kq.push_back(1);
      else
        kq.push_back(0);
    b -= o;
    a -= o;
  }
  if (kq.size() == 0 && b + d < c)
    add(c, b, 2, 1);
  else
    add(b, c, 1, 2);
  if (kq.size() == 0 && d > c)
    add(d, c, 3, 2);
  else
    add(c, d, 2, 3);
  add1(a, 0);
  add1(b, 1);
  add1(c, 2);
  add1(d, 3);
  if (a != 0 || b != 0 || c != 0 || d != 0) {
    cout << "NO";
    return;
  }
  for (int i = 0; i < kq.size() - 1; ++i)
    if (abs(kq[i] - kq[i + 1]) != 1) {
      cout << "NO";
      return;
    }
  cout << "YES\n";
  for (int i = 0; i < kq.size(); ++i) cout << kq[i] << " ";
}
int main(int argc, const char *argv[]) {
  nhap();
  return 0;
}
