#include <bits/stdc++.h>
using namespace std;
const int MN = 100005, inf = 1000000005, mod = 1000000007;
const long long INF = 1000000000000000005LL;
deque<int> Q;
int ile[10];
int main() {
  for (int i = 0; i < 4; ++i) scanf("%d", &ile[i]);
  while (ile[0] && ile[1]) {
    Q.push_back(0);
    Q.push_back(1);
    --ile[0], --ile[1];
  }
  while (ile[2] && ile[3]) {
    Q.push_back(2);
    Q.push_back(3);
    --ile[2], --ile[3];
  }
  while (ile[2] && ile[1]) {
    Q.push_back(2);
    Q.push_back(1);
    --ile[2], --ile[1];
  }
  int ok = 1;
  while (ok) {
    ok = 0;
    for (int i = 0; i < 4; ++i) {
      while (ile[i] && (Q.empty() || abs(Q.front() - i) == 1)) {
        ok = 1;
        Q.push_front(i);
        --ile[i];
      }
      while (ile[i] && (Q.empty() || abs(Q.back() - i) == 1)) {
        ok = 1;
        Q.push_back(i);
        --ile[i];
      }
    }
  }
  for (int i = 0; i < 4; ++i)
    if (ile[i]) {
      printf("NO");
      return 0;
    }
  printf("YES\n");
  while (Q.size()) {
    printf("%d ", Q.front());
    Q.pop_front();
  }
}
