#include <bits/stdc++.h>
int qu[100000], n;
int solve(int *dd, int n, int h1, int h2) {
  int h, i, j;
  i = 0, j = n - 1;
  h = h2;
  qu[j--] = h, dd[h]--;
  if (dd[h] > 0)
    while (h + 1 < 4 && dd[h + 1] > 0) dd[h]--, dd[++h]--, qu[j--] = h;
  h = h1;
  qu[i++] = h, dd[h]--;
  if (dd[h] > 0)
    while (1) {
      if (h > 0 && dd[h - 1] > 0)
        dd[h]--, dd[--h]--, qu[i++] = h;
      else if (h + 1 < 4 && dd[h + 1] > 0)
        dd[h]--, dd[++h]--, qu[i++] = h;
      else
        break;
    }
  for (h = 0; h < 4; h++)
    if (dd[h] > 0) return 0;
  return 1;
}
int main() {
  static int dd[4], dd_[4];
  int h, h1, h2;
  for (h = 0; h < 4; h++) {
    int k;
    scanf("%d", &k), n += k;
    dd[h] = k * 2;
  }
  for (h1 = 0; h1 < 4; h1++)
    for (h2 = h1; h2 < 4; h2++) {
      memcpy(dd_, dd, sizeof dd);
      if (solve(dd_, n, h1, h2)) {
        int i;
        printf("YES\n");
        for (i = 0; i < n; i++) printf("%d ", qu[i]);
        printf("\n");
        return 0;
      }
    }
  printf("NO\n");
  return 0;
}
