#include <bits/stdc++.h>
using namespace std;
template <class T, class U>
void ckmin(T &a, U b) {
  if (a > b) a = b;
}
template <class T, class U>
void ckmax(T &a, U b) {
  if (a < b) a = b;
}
int A, B, C, D, N;
vector<int> ans;
bool work() {
  if (A < 0 || B < 0 || C < 0 || D < 0) return false;
  int freq[4];
  freq[0] = A;
  freq[1] = B;
  freq[2] = C;
  freq[3] = D;
  for (auto i = (0); i < (N - 1); i++) {
    int x = ans.back();
    if (x == 0) {
      if (!freq[1]) {
        return false;
      }
      freq[1]--;
      ans.push_back(1);
    } else if (x == 3) {
      if (!freq[2]) {
        return false;
      }
      freq[2]--;
      ans.push_back(2);
    } else if (x == 1) {
      if (!freq[0]) {
        if (!freq[2]) return false;
        freq[2]--;
        ans.push_back(2);
      } else {
        freq[0]--;
        ans.push_back(0);
      }
    } else if (x == 2) {
      if (!freq[3]) {
        if (!freq[1]) return false;
        freq[1]--;
        ans.push_back(1);
      } else {
        freq[3]--;
        ans.push_back(3);
      }
    }
  }
  return true;
}
void printans() {
  cout << "YES\n";
  for (auto i = (0); i < (((int)((ans).size()))); i++) {
    cout << ans[i] << " \n"[i == ((int)((ans).size())) - 1];
  }
  exit(0);
}
int32_t main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout << fixed << setprecision(12);
  cerr << fixed << setprecision(4);
  cin >> A >> B >> C >> D;
  N = A + B + C + D;
  if (abs(A + C - B - D) > 1) {
    cout << "NO\n";
    return 0;
  }
  if (D - C > 1 || A - B > 1) {
    cout << "NO\n";
    return 0;
  }
  if (D - C == 1) {
    if (A > 0 || B > 0) {
      cout << "NO\n";
      return 0;
    }
    cout << "YES\n";
    for (auto i = (0); i < (C); i++) {
      cout << "3 2 ";
    }
    cout << "3\n";
    return 0;
  }
  if (A - B == 1) {
    if (C > 0 || D > 0) {
      cout << "NO\n";
      return 0;
    }
    cout << "YES\n";
    for (auto i = (0); i < (B); i++) {
      cout << "0 1 ";
    }
    cout << "0\n";
    return 0;
  }
  A--;
  ans.clear();
  ans.push_back(0);
  if (work()) {
    printans();
    return 0;
  }
  A++;
  B--;
  ans.clear();
  ans.push_back(1);
  if (work()) {
    printans();
    return 0;
  }
  B++;
  C--;
  ans.clear();
  ans.push_back(2);
  if (work()) {
    printans();
    return 0;
  }
  C++;
  D--;
  ans.clear();
  ans.push_back(3);
  if (work()) {
    printans();
    return 0;
  }
  D++;
  cout << "NO\n";
  return 0;
}
