#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using db = double;
using ld = long double;
template <typename T>
using V = vector<T>;
template <typename T>
using VV = vector<vector<T>>;
const ll mod = 1000000007;
const ll INF = 1000000099;
const ll LINF = (ll)(1e18 + 99);
vector<ll> dx = {-1, 1, 0, 0}, dy = {0, 0, -1, 1};
template <typename T, typename U>
void chmin(T& t, const U& u) {
  if (t > u) t = u;
}
template <typename T, typename U>
void chmax(T& t, const U& u) {
  if (t < u) t = u;
}
template <typename T>
T gcd(T a, T b) {
  return b ? gcd(b, a % b) : a;
}
template <typename T>
T mpow(T a, T n) {
  T res = 1;
  for (; n; n >>= 1) {
    if (n & 1) res = res * a;
    a = a * a;
  }
  return res;
}
signed main() {
  cin.tie(0);
  ios::sync_with_stdio(false);
  cout << fixed << setprecision(20);
  int num = 0;
  vector<ll> v(4);
  vector<int> fo(0), ba(0);
  for (ll i = 0; i < (ll)(4); ++i) {
    cin >> v[i];
    num += v[i];
  }
  if (num == 1) {
    cout << "YES" << endl;
    for (ll i = 0; i < (ll)(4); ++i) {
      if (v[i]) cout << i << endl;
    }
    return 0;
  }
  while (v[0] > 0 && v[1] > 0) {
    fo.push_back(1);
    fo.push_back(0);
    v[0]--;
    v[1]--;
  }
  while (v[3] > 0 && v[2] > 0) {
    if (v[2] == 0) {
      cout << "NO" << endl;
      return 0;
    }
    ba.push_back(2);
    ba.push_back(3);
    v[2]--;
    v[3]--;
  }
  reverse((fo).begin(), (fo).end());
  while (v[1] > 0 && v[2] > 0) {
    fo.push_back(2);
    fo.push_back(1);
    v[1]--;
    v[2]--;
  }
  if (v[1] >= 1) {
    fo.insert(fo.begin(), 1);
    v[1]--;
  }
  if (v[2] == 1) {
    ba.push_back(2);
    v[2]--;
  }
  if (v[0] >= 1 && (ll)(ba).size() == 0) {
    fo.push_back(0);
    v[0]--;
  }
  if (v[3] >= 1 && (ll)(fo).size() == 0) {
    ba.insert(ba.begin(), 3);
    v[3]--;
  }
  if (v[0] + v[1] + v[2] + v[3] != 0) {
    cout << "NO" << endl;
    return 0;
  }
  cout << "YES" << endl;
  for (ll i = 0; i < (ll)((ll)(fo).size()); ++i) {
    cout << fo[i] << ' ';
  }
  for (ll i = 0; i < (ll)((ll)(ba).size()); ++i) {
    cout << ba[i] << ' ';
  }
  cout << endl;
}
