#include <bits/stdc++.h>
using namespace std;
const int MAXN = 10000000;
const long long INF = 1000000000ll;
const long long LLINF = 1000000000000000000ll;
const long long MOD = 1000000007;
vector<int> a;
void go(int c0, int c1, int c2, int c3, int pr) {
  if (c0 < 0 || c1 < 0 || c2 < 0 || c3 < 0) {
    return;
  }
  if (c0 == 0 && c1 == 0 && c2 == 0 && c3 == 0) {
    cout << "YES\n";
    for (int i = 0; i < (int)(a.size()); i++) {
      cout << a[i] << " ";
    }
    exit(0);
  }
  if (pr == 0) {
    a.push_back(1);
    go(c0, c1 - 1, c2, c3, 1);
    a.pop_back();
  }
  if (pr == 1) {
    if (c0 > 0) {
      a.push_back(0);
      go(c0 - 1, c1, c2, c3, 0);
      a.pop_back();
    } else {
      a.push_back(2);
      go(c0, c1, c2 - 1, c3, 2);
      a.pop_back();
    }
  }
  if (pr == 2) {
    if (c1 > 0) {
      a.push_back(1);
      go(c0, c1 - 1, c2, c3, 1);
      a.pop_back();
    } else {
      a.push_back(3);
      go(c0, c1, c2, c3 - 1, 3);
      a.pop_back();
    }
  }
  if (pr == 3) {
    a.push_back(2);
    go(c0, c1, c2 - 1, c3, 2);
    a.pop_back();
  }
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  cout.precision(10);
  cout << fixed;
  int c0, c1, c2, c3;
  cin >> c0 >> c1 >> c2 >> c3;
  a.push_back(0);
  go(c0 - 1, c1, c2, c3, 0);
  a.pop_back();
  a.push_back(1);
  go(c0, c1 - 1, c2, c3, 1);
  a.pop_back();
  if (c0 == 0) {
    a.push_back(2);
    go(c0, c1, c2 - 1, c3, 2);
    a.pop_back();
  }
  if (c0 == 0 && c1 == 0) {
    a.push_back(3);
    go(c0, c1, c2, c3 - 1, 3);
    a.pop_back();
  }
  cout << "NO\n";
  return 0;
}
