#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using ull = unsigned long long;
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  int a, b, c, d;
  cin >> a >> b >> c >> d;
  deque<int> res;
  if (abs(b - a) == 1) {
    if (a > b) {
      res.push_back(0);
      --a;
    } else {
      res.push_back(1);
      --b;
    }
  } else if (abs(d - c) == 1) {
    if (c > d) {
      res.push_back(2);
      --c;
    } else {
      res.push_back(3);
      --d;
    }
  } else {
    int mx = 0;
    mx = max(a, mx);
    mx = max(b, mx);
    mx = max(c, mx);
    mx = max(d, mx);
    if (a == mx) {
      res.push_back(0);
      --a;
    } else if (b == mx) {
      res.push_back(1);
      --b;
    } else if (c == mx) {
      res.push_back(2);
      --c;
    } else {
      res.push_back(3);
      --d;
    }
  }
  while (true) {
    if (abs(res.front() - 0) == 1 and a) {
      res.push_front(0);
      --a;
    } else if (abs(res.front() - 1) == 1 and b) {
      res.push_front(1);
      --b;
    } else if (abs(res.front() - 2) == 1 and c) {
      res.push_front(2);
      --c;
    } else if (abs(res.front() - 3) == 1 and d) {
      res.push_front(3);
      --d;
    } else if (abs(res.back() - 0) == 1 and a) {
      res.push_back(0);
      --a;
    } else if (abs(res.back() - 1) == 1 and b) {
      res.push_back(1);
      --b;
    } else if (abs(res.back() - 2) == 1 and c) {
      res.push_back(2);
      --c;
    } else if (abs(res.back() - 3) == 1 and d) {
      res.push_back(3);
      --d;
    } else
      break;
  }
  if (!a and !b and !c and !d) {
    cout << "YES" << endl;
    while (!res.empty()) {
      cout << res.front() << " ";
      res.pop_front();
    }
    cout << endl;
  } else {
    cout << "NO" << endl;
  }
}
