#include <bits/stdc++.h>
using namespace std;
const int INF = 1 << 30;
void answer(deque<int>& ans) {
  cout << "YES\n";
  for (auto& v : ans) {
    cout << v << ' ';
  }
  cout << '\n';
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  int tt = clock();
  int a, b, c, d;
  cin >> a >> b >> c >> d;
  deque<int> ans;
  int k = min(a, b);
  for (int i = 1; i <= k; ++i) {
    ans.push_back(0);
    ans.push_back(1);
  }
  a -= k;
  b -= k;
  if (a > 1) {
    cerr << "here1\n";
    cout << "NO\n";
    return 0;
  }
  if (a == 1 && c + d > 0) {
    cerr << "here2\n";
    cout << "NO\n";
    return 0;
  }
  if (a == 1) {
    ans.push_back(0);
    answer(ans);
    return 0;
  }
  if (b > c + 1) {
    cerr << "here3\n";
    cout << "NO\n";
    return 0;
  }
  if (b >= c + 1 && d > 0) {
    cerr << "here4\n";
    cout << "NO\n";
    return 0;
  }
  if (b == c + 1) {
    ans.push_front(1);
    for (int i = 1; i <= c; ++i) {
      ans.push_back(2);
      ans.push_back(1);
    }
    answer(ans);
    return 0;
  }
  if (b > 0 && b + d >= c - 1) {
    ans.push_front(1);
    b--;
  }
  if (b + d > c + 1) {
    cerr << "here5\n";
    cout << "NO\n";
    return 0;
  }
  for (int i = 1; i <= b; ++i) {
    ans.push_back(2);
    ans.push_back(1);
  }
  c -= b;
  b = 0;
  if (c != d && c != d + 1 && (c != d + 2 || ans.empty() || ans.front() != 1) &&
      (d != c + 1 || !ans.empty())) {
    cerr << c << ' ' << d << "\n";
    cerr << "here6" << '\n';
    cout << "NO\n";
    return 0;
  }
  if (d == c + 1 && ans.empty()) {
    for (int i = 1; i <= c; ++i) {
      ans.push_back(3);
      ans.push_back(2);
    }
    ans.push_back(3);
    answer(ans);
    return 0;
  }
  if (c == d + 2 && !ans.empty() && ans.front() == 1) {
    ans.push_front(2);
    c--;
  }
  for (int i = 1; i <= min(c, d); ++i) {
    ans.push_back(2);
    ans.push_back(3);
  }
  if (c == d + 1) ans.push_back(2);
  answer(ans);
  cerr << "TIME = " << (double)1.0 * (clock() - tt) / CLOCKS_PER_SEC
       << " seconds" << endl;
  return 0;
}
