#include <bits/stdc++.h>
using namespace std;
int x[410000];
int y[410000];
int main() {
  for (int i = 0; i < 4; i++) {
    scanf("%d", &x[i]);
  }
  int idx = 3;
  while (x[0] == 0) {
    for (int i = 0; i <= 2; i++) {
      x[i] = x[i + 1];
    }
    x[idx] = 0;
    idx--;
  }
  int q = 3 - idx;
  if (x[0] - 1 > x[1]) {
    cout << "NO" << endl;
  } else if (x[0] - 1 == x[1]) {
    if (x[2] == x[3] && !x[2]) {
      cout << "YES" << endl;
      for (int i = 1; i < x[0]; i++) {
        printf("%d %d ", 0 + q, 1 + q);
      }
      printf("%d\n", 0 + q);
    } else {
      cout << "NO" << endl;
    }
  } else {
    int mini = max(x[1] - x[0] - 1, 0);
    int maxi = x[1] - x[0] + 1;
    int tot = x[1] - x[0];
    if (x[2] - mini < x[3]) {
      cout << "NO" << endl;
    } else if (x[2] - maxi > x[3]) {
      cout << "NO" << endl;
    } else {
      cout << "YES" << endl;
      int need = x[2] - x[3];
      if (need == 0) {
        if (x[0] == x[1] - 1) {
          printf("%d ", q + 1);
        }
        for (int i = 1; i <= x[0]; i++) {
          printf("%d %d ", 0 + q, 1 + q);
        }
        for (int i = 1; i <= x[2]; i++) {
          printf("%d %d ", 2 + q, 3 + q);
        }
        cout << endl;
      } else {
        int idx = 0;
        for (int i = 1; i <= x[0]; i++) {
          y[++idx] = 0 + q;
          y[++idx] = 1 + q;
        }
        int judge = 0;
        for (int i = 1; i <= x[2] - x[3] && (x[1] - x[0] >= i); i++) {
          y[++idx] = 2 + q;
          y[++idx] = 1 + q;
          if (i == x[2] - x[3]) judge = 1;
        }
        if (!judge) y[++idx] = 2 + q;
        if (!judge) {
          for (int i = 1; i <= x[3]; i++) {
            y[++idx] = 3 + q;
            y[++idx] = 2 + q;
          }
        } else {
          for (int i = 1; i <= x[3]; i++) {
            y[++idx] = 2 + q;
            y[++idx] = 3 + q;
          }
        }
        int d = 1;
        if (x[1] - x[0] > x[2] - x[3]) {
          d = 0;
          y[0] = 1 + q;
        }
        for (d; d <= idx; d++) {
          cout << y[d] << " ";
        }
        cout << endl;
      }
    }
  }
  return 0;
}
