#include <bits/stdc++.h>
using namespace std;
const long long int MOD = 1e9 + 7;
const long long int mod = 1e9 + 7;
bool prime[1000001];
void sieve() {
  memset(prime, true, sizeof(prime));
  for (long long int i = 2; i * i <= 1000000; i++)
    if (prime[i])
      for (long long int j = i * i; j <= 1000000; j += i) prime[j] = false;
  prime[0] = prime[1] = false;
}
long long int cnt1 = 0, cnt2 = 0, cnt3 = 0, cnt4 = 0, cnt5 = 0, ans1 = 0,
              ans2 = 0, ans3 = 0;
void solve() {
  long long int a, b, c, d;
  cin >> a >> b >> c >> d;
  if (a == 0 && b == 0) {
    if (abs(c - d) <= 1) {
      cout << "YES" << endl;
      if (c > d) {
        for (long long int i = 0; i < d; i++) {
          cout << "2 3 ";
        }
        cout << "2" << endl;
        return;
      } else if (c < d) {
        for (long long int i = 0; i < c; i++) {
          cout << "3 2 ";
        }
        cout << "3" << endl;
        return;
      } else {
        for (long long int i = 0; i < c; i++) {
          cout << "2 3"
               << " ";
        }
        cout << endl;
        return;
      }
    } else {
      cout << "NO" << endl;
      return;
    }
  }
  if (c == 0 && d == 0) {
    if (abs(a - b) <= 1) {
      cout << "YES" << endl;
      if (a > b) {
        for (long long int i = 0; i < b; i++) {
          cout << "0 1 ";
        }
        cout << "0" << endl;
        return;
      } else if (a < b) {
        for (long long int i = 0; i < a; i++) {
          cout << "1 0 ";
        }
        cout << "1" << endl;
        return;
      } else {
        for (long long int i = 0; i < a; i++) {
          cout << "0 1"
               << " ";
        }
        cout << endl;
        return;
      }
    } else {
      cout << "NO" << endl;
      return;
    }
  }
  if ((b > 0 || a > 0) && d > c) {
    cout << "NO" << endl;
    return;
  }
  if ((c > 0 || d > 0) && a > b) {
    cout << "NO" << endl;
    return;
  }
  vector<long long int> v1;
  vector<long long int> v2;
  vector<long long int> v3;
  for (long long int i = 0; i < a; i++) {
    v2.push_back(0);
    v2.push_back(1);
  }
  b -= a;
  a = 0;
  for (long long int i = 0; i < d; i++) {
    v3.push_back(2);
    v3.push_back(3);
  }
  c -= d;
  d = 0;
  vector<long long int> v4;
  for (long long int i = 0; i < min(b, c); i++) {
    v4.push_back(2);
    v4.push_back(1);
  }
  long long int jjj1 = min(b, c);
  b -= jjj1;
  c -= jjj1;
  if (b > 0) {
    v2.insert(v2.begin(), 1);
    b--;
  }
  if (b > 0) {
    cout << "NO" << endl;
    return;
  }
  if (c > 0) {
    v3.push_back(2);
    c--;
  }
  if (c > 0) {
    cout << "NO" << endl;
    return;
  }
  cout << "YES" << endl;
  for (long long int i = 0; i < v2.size(); i++) {
    cout << v2[i] << " ";
  }
  for (long long int i = 0; i < v4.size(); i++) {
    cout << v4[i] << " ";
  }
  for (long long int i = 0; i < v3.size(); i++) {
    cout << v3[i] << " ";
  }
  cout << endl;
  return;
}
signed main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  ;
  long long int t = 1;
  while (t--) {
    solve();
  }
  return 0;
}
