#include <bits/stdc++.h>
using namespace std;
const int kMaxN = 100001;
int a[4], b[kMaxN];
int n = 1;
int Find(int i) {
  switch (i) {
    case 0:
      if (a[i + 1]) {
        return i + 1;
      }
      break;
    case 1:
      if (a[i - 1]) {
        return i - 1;
      }
      if (a[i + 1]) {
        return i + 1;
      }
      break;
    case 2:
      if (a[i + 1]) {
        return i + 1;
      }
      if (a[i - 1]) {
        return i - 1;
      }
    case 3:
      if (a[i - 1]) {
        return i - 1;
      }
  }
  return -1;
}
bool Check() {
  int i;
  while ((i = Find(b[n])) != -1) {
    n++;
    b[n] = i;
    a[i]--;
  }
  if ((i = Find(b[1])) != -1) {
    b[0] = i;
    a[i]--;
  }
  for (int i = 0; i <= 3; i++) {
    if (a[i]) {
      return false;
    }
  }
  return true;
}
int main() {
  for (int i = 0; i <= 3; i++) {
    cin >> a[i];
    if (a[i]) {
      b[1] = i;
    }
  }
  a[b[1]]--;
  b[0] = -1;
  if (Check()) {
    cout << "YES" << endl;
    if (b[0] != -1) {
      cout << b[0] << " ";
    }
    for (int i = 1; i <= n; i++) {
      cout << b[i] << " ";
    }
  } else {
    cout << "NO" << endl;
  }
  return 0;
}
