#include <bits/stdc++.h>
using namespace std;
bool diffIsOne(int a, int b) { return (a - b == 1) || (b - a == 1); }
void insert(deque<int>& q, int* a, int id) {
  if (a[id] && (!q.size() || diffIsOne(q.back(), id))) {
    q.push_back(id);
    a[id]--;
  }
  if (a[id] && (!q.size() || diffIsOne(q.front(), id))) {
    q.push_front(id);
    a[id]--;
  }
}
int main() {
  iostream::sync_with_stdio(false);
  int a[4];
  for (int i = 0; i < 4; i++) cin >> a[i];
  int n = a[0] + a[1] + a[2] + a[3];
  deque<int> ans;
  for (int j : {0, 2})
    for (int i = 0; i < n; i++) {
      insert(ans, a, j);
      insert(ans, a, j + 1);
    }
  for (int i = 0; i < n; i++)
    for (int j = 0; j < 4; j++) insert(ans, a, j);
  cout << (n == ans.size() ? "YES" : "NO") << '\n';
  if (n == ans.size())
    for (int j : ans) cout << j << ' ';
  cout << '\n';
}
