#include <bits/stdc++.h>
using namespace std;
int A, B, C, D, n, m, tot, s[100010];
int left1, left2, right1, right2;
int main() {
  scanf("%d%d%d%d", &A, &B, &C, &D);
  n = A + B + C + D;
  m = (A > 0) + (B > 0) + (C > 0) + (D > 0);
  if (m == 1) {
    if (n > 1) {
      printf("NO\n");
      return 0;
    }
    printf("YES\n");
    if (A) printf("0\n");
    if (B) printf("1\n");
    if (C) printf("2\n");
    if (D) printf("3\n");
    return 0;
  }
  if (B < A - 1) {
    printf("NO\n");
    return 0;
  }
  if (C < D - 1) {
    printf("NO\n");
    return 0;
  }
  B -= max(A - 1, 0);
  C -= max(D - 1, 0);
  if (B > C && A) left1 = 1, B--;
  if (B > C && !D) right1 = 1, B--;
  if (B < C && D) right2 = 1, C--;
  if (B < C && !A) left2 = 1, C--;
  if (B != C) {
    printf("NO\n");
    return 0;
  }
  if (left1) s[++tot] = 1;
  if (left2) s[++tot] = 2;
  for (int i = 1; i < A; i++) s[++tot] = 0, s[++tot] = 1;
  if (A) s[++tot] = 0;
  for (int i = 1; i <= B; i++) s[++tot] = 1, s[++tot] = 2;
  for (int i = 1; i < D; i++) s[++tot] = 3, s[++tot] = 2;
  if (D) s[++tot] = 3;
  if (right1) s[++tot] = 1;
  if (right2) s[++tot] = 2;
  if (tot != n) assert(0);
  for (int i = 1; i < n; i++)
    if (abs(s[i + 1] - s[i]) != 1) {
      printf("NO\n");
      return 0;
    }
  printf("YES\n");
  for (int i = 1; i <= n; i++) printf("%d ", s[i]);
  printf("\n");
  return 0;
}
