#include <bits/stdc++.h>
using namespace std;
#pragma GCC optimize("Ofast")
#pragma GCC optimize("unroll-loops")
#pragma GCC optimize("-ffloat-store")
#pragma GCC optimize("-fno-defer-pop")
long long int power(long long int a, long long int b, long long int m) {
  if (b == 0) return 1;
  if (b == 1) return a % m;
  long long int t = power(a, b / 2, m) % m;
  t = (t * t) % m;
  if (b & 1) t = ((t % m) * (a % m)) % m;
  return t;
}
long long int modInverse(long long int a, long long int m) {
  return power(a, m - 2, m);
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(NULL);
  long long int a, b, c, d, i, j, st[4];
  vector<long long int> v1;
  cin >> a >> b >> c >> d;
  if (a == 1 && b == 0 && c == 0 && d == 0) {
    cout << "YES\n0";
    return 0;
  }
  if (a == 0 && b == 1 && c == 0 && d == 0) {
    cout << "YES\n1";
    return 0;
  }
  if (a == 0 && b == 0 && c == 1 && d == 0) {
    cout << "YES\n2";
    return 0;
  }
  if (a == 0 && b == 0 && c == 0 && d == 1) {
    cout << "YES\n3";
    return 0;
  }
  st[0] = a;
  st[1] = b;
  st[2] = c;
  st[3] = d;
  while (a > 0 && b > 0) {
    v1.push_back(0);
    a--;
    v1.push_back(1);
    b--;
  }
  if (a == 1 && b == 0) {
    v1.push_back(0);
    a--;
  }
  while (b > 0 && c > 0) {
    v1.push_back(2);
    c--;
    v1.push_back(1);
    b--;
  }
  while (c > 0 && d > 0) {
    v1.push_back(2);
    c--;
    v1.push_back(3);
    d--;
  }
  if (b == 1 && c == 0) {
    v1.push_back(1);
    b--;
  } else if (c > 0) {
    v1.push_back(2);
    c--;
  }
  long long int n = v1.size(), flg = 1;
  for (i = 1; i < n; i++) {
    if (abs(v1[i] - v1[i - 1]) != 1) {
      flg = 0;
      break;
    }
  }
  if (flg && c == 0 && d == 0 && a == 0 && b == 0) {
    cout << "YES"
         << "\n";
    for (auto it : v1) {
      cout << it << " ";
    }
    return 0;
  }
  v1.clear();
  a = st[0];
  b = st[1];
  c = st[2];
  d = st[3];
  while (a > 0 && b > 0) {
    v1.push_back(1);
    b--;
    v1.push_back(0);
    a--;
  }
  if (a == 1 && b == 0) {
    v1.push_back(0);
    a--;
  } else if (a > 0) {
    cout << "NO"
         << "\n";
    return 0;
  }
  while (b > 0 && c > 0) {
    v1.push_back(1);
    b--;
    v1.push_back(2);
    c--;
  }
  if (b == 1 && c == 0) {
    v1.push_back(1);
    b--;
  } else if (b > 0) {
    cout << "NO"
         << "\n";
    return 0;
  }
  while (c > 0 && d > 0) {
    v1.push_back(3);
    c--;
    v1.push_back(2);
    d--;
  }
  if (d > 0) {
    v1.push_back(3);
    d--;
  }
  n = v1.size();
  flg = 1;
  for (i = 1; i < n; i++) {
    if (abs(v1[i] - v1[i - 1]) != 1) {
      flg = 0;
      break;
    }
  }
  if (flg && c == 0 && d == 0 && a == 0 && b == 0) {
    cout << "YES"
         << "\n";
    for (auto it : v1) {
      cout << it << " ";
    }
  } else {
    cout << "NO"
         << "\n";
  }
  return 0;
}
