#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e5 + 5;
inline int read() {
  char ch = getchar();
  int p = 1, data = 0;
  while (ch < '0' || ch > '9') {
    if (ch == '-') p = -1;
    ch = getchar();
  }
  while (ch >= '0' && ch <= '9') {
    data = (data << 3) + (data << 1) + ch - '0';
    ch = getchar();
  }
  return p * data;
}
int a[4];
int ans[maxn];
bool flag;
void dfs(int pre, int k) {
  if (flag) return;
  if (a[0] == a[1] && a[1] == a[2] && a[2] == a[3] && a[0] == 0 && (!flag)) {
    printf("YES\n");
    flag = 1;
    for (int i = 0; i < k; i++) {
      if (i != k - 1)
        printf("%d ", ans[i]);
      else
        printf("%d", ans[i]);
    }
    return;
  }
  if (pre == 0) {
    if (a[1]) {
      a[1]--;
      ans[k] = 1;
      dfs(1, k + 1);
      a[1]++;
    } else {
      return;
    }
  } else if (pre == 1) {
    if (a[0]) {
      a[0]--;
      ans[k] = 0;
      dfs(0, k + 1);
      a[0]++;
    } else if (a[2]) {
      a[2]--;
      ans[k] = 2;
      dfs(2, k + 1);
      a[2]++;
    } else
      return;
  } else if (pre == 2) {
    if (a[3]) {
      a[3]--;
      ans[k] = 3;
      dfs(3, k + 1);
      a[3]++;
    } else if (a[1]) {
      a[1]--;
      ans[k] = 1;
      dfs(1, k + 1);
      a[1]++;
    } else
      return;
  } else if (pre == 3) {
    if (a[2]) {
      a[2]--;
      ans[k] = 2;
      dfs(2, k + 1);
      a[2]++;
    } else
      return;
  }
}
int main() {
  a[0] = read(), a[1] = read(), a[2] = read(), a[3] = read();
  int max1 = max(a[0], a[1]);
  int max2 = max(a[2], a[3]);
  int maxx = max(max1, max2);
  if (a[0] == maxx && a[0]) {
    ans[0] = 0;
    a[0]--;
    dfs(0, 1);
  } else if (a[1] == maxx) {
    ans[0] = 1;
    a[1]--;
    dfs(1, 1);
    a[1]++;
    if ((!flag) && a[0]) {
      ans[0] = 0;
      a[0]--;
      dfs(0, 1);
    }
  } else if (a[3] == maxx && a[3]) {
    ans[0] = 3;
    a[3]--;
    dfs(3, 1);
  } else if (a[2] == maxx && a[2]) {
    ans[0] = 2;
    a[2]--;
    dfs(2, 1);
    a[2]++;
    if ((!flag) && a[3]) {
      ans[0] = 3;
      a[3]--;
      dfs(3, 1);
    }
  }
  if (!flag) printf("NO");
  return 0;
}
