#include <bits/stdc++.h>
using namespace std;
const int maxn = 2e5 + 5;
const int INF = 1e9;
void put(char c) {
  putchar(c);
  putchar(' ');
}
void put(int a, int b, char c, char d) {
  puts("YES");
  if (a >= b) {
    while (b && a) {
      printf("%c %c ", c, d);
      a--;
      b--;
    }
    if (a > b) printf("%c", c);
  } else {
    while (a && b) {
      printf("%c %c ", d, c);
      a--;
      b--;
    }
    if (b > a) printf("%c", d);
  }
  puts("");
}
void solve() {
  int a, b, c, d;
  scanf("%d %d %d %d", &a, &b, &c, &d);
  if (c == 0 && d == 0 && abs(a - b) <= 1) {
    put(a, b, '0', '1');
    return;
  }
  if (a == 0 && d == 0 && abs(b - c) <= 1) {
    put(b, c, '1', '2');
    return;
  }
  if (a == 0 && b == 0 && abs(c - d) <= 1) {
    put(c, d, '2', '3');
    return;
  }
  int ba = b - a;
  int cd = c - d;
  if (ba >= 0 && cd >= 0 && abs(ba - cd) <= 1) {
    puts("YES");
    if (ba > cd) {
      printf("1 ");
    }
    while (a--) {
      printf("0 1 ");
    }
    for (int i = 0; i < min(ba, cd); i++) {
      printf("2 1 ");
    }
    while (d--) {
      printf("2 3 ");
    }
    if (cd > ba) {
      printf("2");
    }
    printf("\n");
  } else {
    puts("NO");
  }
}
int main() {
  int t = 1;
  while (t--) {
    solve();
  }
  return 0;
}
