#include <bits/stdc++.h>
using namespace std;
inline int Get() {
  char c;
  bool o = false;
  while (!isdigit(c = getchar()))
    if (c == '-') o = true;
  int x = c - '0';
  while (isdigit(c = getchar())) x = x * 10 + c - '0';
  return o ? -x : x;
}
const int maxn = 1e5 + 7;
int num;
int ans[maxn];
bool Solve(int x, int a, int b, int c, int d) {
  int e[4] = {a, b, c, d};
  if (!e[x]) return false;
  ans[++num] = x;
  --e[x];
  if (x > 0 && e[x - 1])
    return Solve(x - 1, e[0], e[1], e[2], e[3]);
  else if (x < 3 && e[x + 1])
    return Solve(x + 1, e[0], e[1], e[2], e[3]);
  if (e[0] + e[1] + e[2] + e[3]) return false;
  return true;
}
int main() {
  int a = Get(), b = Get(), c = Get(), d = Get();
  for (int i = 0; i <= 3; ++i) {
    num = 0;
    if (Solve(i, a, b, c, d)) {
      printf("YES\n");
      for (int k = 1; k <= num; ++k) printf("%d ", ans[k]);
      return 0;
    }
  }
  printf("NO\n");
  return 0;
}
