#include <bits/stdc++.h>
using namespace std;
const int N = (1e6 + 12);
const int mod = (1e9 + 7);
const int INF = (0x3f3f3f3f);
int ar[N];
int main() {
  int a, b, c, d;
  cin >> a >> b >> c >> d;
  if (b + 1 < a || b > c + a + 1 || d > c + 1 || c > d + b + 1) {
    cout << "NO";
    return 0;
  }
  int w = a, x = b, y = c, z = d, n = a + b + c + d;
  a = w, b = x, c = y, d = z;
  memset(ar, -1, sizeof(ar));
  if (a) {
    bool f = true;
    ar[1] = 0;
    a--;
    for (int i = 2; i <= n; i++) {
      if (ar[i - 1] == -1) {
        f = false;
        break;
      }
      if (ar[i - 1] == 0) {
        if (b) {
          ar[i] = 1;
          b--;
        }
      }
      if (ar[i - 1] == 1) {
        if (a) {
          ar[i] = 0;
          a--;
        } else if (c) {
          ar[i] = 2;
          c--;
        }
      }
      if (ar[i - 1] == 2) {
        if (b) {
          ar[i] = 1;
          b--;
        } else if (d) {
          ar[i] = 3;
          d--;
        }
      }
      if (ar[i - 1] == 3) {
        if (c) {
          ar[i] = 2;
          c--;
        }
      }
    }
    if (ar[n] == -1) {
      f = false;
    }
    if (f) {
      cout << "YES\n";
      for (int i = 1; i <= n; i++) {
        cout << ar[i] << " ";
      }
      return 0;
    }
  }
  a = w, b = x, c = y, d = z;
  memset(ar, -1, sizeof(ar));
  if (b) {
    bool f = true;
    ar[1] = 1;
    b--;
    for (int i = 2; i <= n; i++) {
      if (ar[i - 1] == -1) {
        f = false;
        break;
      }
      if (ar[i - 1] == 0) {
        if (b) {
          ar[i] = 1;
          b--;
        }
      }
      if (ar[i - 1] == 1) {
        if (a) {
          ar[i] = 0;
          a--;
        } else if (c) {
          ar[i] = 2;
          c--;
        }
      }
      if (ar[i - 1] == 2) {
        if (b) {
          ar[i] = 1;
          b--;
        } else if (d) {
          ar[i] = 3;
          d--;
        }
      }
      if (ar[i - 1] == 3) {
        if (c) {
          ar[i] = 2;
          c--;
        }
      }
    }
    if (ar[n] == -1) {
      f = false;
    }
    if (f) {
      cout << "YES\n";
      for (int i = 1; i <= n; i++) {
        cout << ar[i] << " ";
      }
      return 0;
    }
  }
  a = w, b = x, c = y, d = z;
  memset(ar, -1, sizeof(ar));
  if (c) {
    bool f = true;
    ar[1] = 2;
    c--;
    for (int i = 2; i <= n; i++) {
      if (ar[i - 1] == -1) {
        f = false;
        break;
      }
      if (ar[i - 1] == 0) {
        if (b) {
          ar[i] = 1;
          b--;
        }
      }
      if (ar[i - 1] == 1) {
        if (a) {
          ar[i] = 0;
          a--;
        } else if (c) {
          ar[i] = 2;
          c--;
        }
      }
      if (ar[i - 1] == 2) {
        if (b) {
          ar[i] = 1;
          b--;
        } else if (d) {
          ar[i] = 3;
          d--;
        }
      }
      if (ar[i - 1] == 3) {
        if (c) {
          ar[i] = 2;
          c--;
        }
      }
    }
    if (ar[n] == -1) {
      f = false;
    }
    if (f) {
      cout << "YES\n";
      for (int i = 1; i <= n; i++) {
        cout << ar[i] << " ";
      }
      return 0;
    }
  }
  a = w, b = x, c = y, d = z;
  memset(ar, -1, sizeof(ar));
  if (d) {
    bool f = true;
    ar[1] = 3;
    d--;
    for (int i = 2; i <= n; i++) {
      if (ar[i - 1] == -1) {
        f = false;
        break;
      }
      if (ar[i - 1] == 0) {
        if (b) {
          ar[i] = 1;
          b--;
        }
      }
      if (ar[i - 1] == 1) {
        if (a) {
          ar[i] = 0;
          a--;
        } else if (c) {
          ar[i] = 2;
          c--;
        }
      }
      if (ar[i - 1] == 2) {
        if (b) {
          ar[i] = 1;
          b--;
        } else if (d) {
          ar[i] = 3;
          d--;
        }
      }
      if (ar[i - 1] == 3) {
        if (c) {
          ar[i] = 2;
          c--;
        }
      }
    }
    if (ar[n] == -1) {
      f = false;
    }
    if (f) {
      cout << "YES\n";
      for (int i = 1; i <= n; i++) {
        cout << ar[i] << " ";
      }
      return 0;
    }
  }
  cout << "NO";
}
