#include <bits/stdc++.h>
using namespace std;
template <class T>
bool ckmin(T& a, T b) {
  return b < a ? a = b, 1 : 0;
}
template <class T>
bool ckmax(T& a, T b) {
  return a < b ? a = b, 1 : 0;
}
bool oscillate(string& out, int x, int y, int printX) {
  string sx = to_string(abs(printX)) + ' ';
  string sy = to_string(abs(printX + 1)) + ' ';
  if (x == y) {
    for (int i = 0; i < x; i++) {
      out += sx + sy;
    }
  } else if (x + 1 == y) {
    out += sy;
    for (int i = 0; i < x; i++) {
      out += sx + sy;
    }
  } else if (x == y + 1) {
    for (int i = 0; i < y; i++) {
      out += sx + sy;
    }
    out += sx;
  } else
    return false;
  return true;
}
void oscill_eq(string& out, int x, int printFirst, bool smallerFirst) {
  oscillate(out, x, x, smallerFirst ? printFirst : -printFirst);
}
void _run(string& out) {
  int a, b, c, d;
  cin >> a >> b >> c >> d;
  out += "YES\n";
  switch ((a != 0) << 3 | (b != 0) << 2 | (c != 0) << 1 | (d != 0) << 0) {
    case 0b0001:
      if (d != 1) break;
      out += "3";
      return;
    case 0b0010:
      if (c != 1) break;
      out += "2";
      return;
    case 0b0100:
      if (b != 1) break;
      out += "1";
      return;
    case 0b1000:
      if (a != 1) break;
      out += "0";
      return;
    case 0b0011:
      if (oscillate(out, c, d, 2)) return;
      break;
    case 0b0110:
      if (oscillate(out, b, c, 1)) return;
      break;
    case 0b1100:
      if (oscillate(out, a, b, 0)) return;
      break;
    case 0b0111:
    case 0b1110:
    case 0b1111: {
      int g = b - a;
      int h = c - d;
      if (g < 0 || h < 0) {
        break;
      }
      if (g == h) {
        oscill_eq(out, a, 0, true);
        oscill_eq(out, g, 2, false);
        oscill_eq(out, d, 2, true);
      } else if (g == h + 1) {
        oscillate(out, a, a + 1, 0);
        oscill_eq(out, h, 2, false);
        oscill_eq(out, d, 2, true);
      } else if (g + 1 == h) {
        oscill_eq(out, a, 0, true);
        oscill_eq(out, g, 2, false);
        oscillate(out, d + 1, d, 2);
      } else
        break;
      return;
    }
    case 0b0101:
    case 0b1001:
    case 0b1010:
    case 0b1011:
    case 0b1101:
      break;
  }
  out = "NO";
}
int main() {
  ios::sync_with_stdio(false);
  {
    string out;
    _run(out);
    cout << out << "\n";
  }
  return 0;
}
