#include <bits/stdc++.h>
using namespace std;
const long long MOD = 1e9 + 7;
bool alt1(int a, int b, int c, int d, vector<int>& ans) {
  int n = a + b + c + d;
  if (!a) return false;
  ans.push_back(0);
  a--;
  for (int i = 1; i < n; i++) {
    int ultimo = ans.back();
    if (ultimo == 0) {
      ans.push_back(1);
      b--;
    } else if (ultimo == 1) {
      if (a) {
        ans.push_back(0);
        a--;
      } else {
        ans.push_back(2);
        c--;
      }
    } else if (ultimo == 2) {
      if (b) {
        ans.push_back(1);
        b--;
      } else {
        ans.push_back(3);
        d--;
      }
    } else {
      ans.push_back(2);
      c--;
    }
    if (a < 0 || b < 0 || c < 0 || d < 0) return false;
  }
  return true;
}
bool alt2(int a, int b, int c, int d, vector<int>& ans) {
  int n = a + b + c + d;
  if (!b) return false;
  ans.push_back(1);
  b--;
  for (int i = 1; i < n; i++) {
    int ultimo = ans.back();
    if (ultimo == 0) {
      ans.push_back(1);
      b--;
    } else if (ultimo == 1) {
      if (a) {
        ans.push_back(0);
        a--;
      } else {
        ans.push_back(2);
        c--;
      }
    } else if (ultimo == 2) {
      if (b) {
        ans.push_back(1);
        b--;
      } else {
        ans.push_back(3);
        d--;
      }
    } else {
      ans.push_back(2);
      c--;
    }
    if (a < 0 || b < 0 || c < 0 || d < 0) return false;
  }
  return true;
}
bool alt3(int a, int b, int c, int d, vector<int>& ans) {
  int n = a + b + c + d;
  if (!c) return false;
  ans.push_back(2);
  c--;
  for (int i = 1; i < n; i++) {
    int ultimo = ans.back();
    if (ultimo == 0) {
      ans.push_back(1);
      b--;
    } else if (ultimo == 1) {
      if (a) {
        ans.push_back(0);
        a--;
      } else {
        ans.push_back(2);
        c--;
      }
    } else if (ultimo == 2) {
      if (b) {
        ans.push_back(1);
        b--;
      } else {
        ans.push_back(3);
        d--;
      }
    } else {
      ans.push_back(2);
      c--;
    }
    if (a < 0 || b < 0 || c < 0 || d < 0) return false;
  }
  return true;
}
bool alt4(int a, int b, int c, int d, vector<int>& ans) {
  int n = a + b + c + d;
  if (!d) return false;
  ans.push_back(3);
  d--;
  for (int i = 1; i < n; i++) {
    int ultimo = ans.back();
    if (ultimo == 0) {
      ans.push_back(1);
      b--;
    } else if (ultimo == 1) {
      if (a) {
        ans.push_back(0);
        a--;
      } else {
        ans.push_back(2);
        c--;
      }
    } else if (ultimo == 2) {
      if (b) {
        ans.push_back(1);
        b--;
      } else {
        ans.push_back(3);
        d--;
      }
    } else {
      ans.push_back(2);
      c--;
    }
    if (a < 0 || b < 0 || c < 0 || d < 0) return false;
  }
  return true;
}
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  int a, b, c, d;
  cin >> a >> b >> c >> d;
  vector<int> ans1, ans2, ans3, ans4, ans;
  bool r1, r2, r3, r4, r = true;
  r1 = alt1(a, b, c, d, ans1);
  r2 = alt2(a, b, c, d, ans2);
  r3 = alt3(a, b, c, d, ans3);
  r4 = alt4(a, b, c, d, ans4);
  if (r1)
    ans = ans1;
  else if (r2)
    ans = ans2;
  else if (r3)
    ans = ans3;
  else if (r4)
    ans = ans4;
  else
    r = false;
  if (r) {
    cout << "YES\n";
    for (int i = 0; i < (int)ans.size(); i++) cout << ans[i] << ' ';
    cout << '\n';
  } else {
    cout << "NO\n";
  }
  return 0;
}
