#include <bits/stdc++.h>   template <class T>   T gcd(T a, T b) {     T r;     while (b != 0) {       r = a % b;       a = b;       b = r;     }     return a;   }   template <class T>   T lcm(T a, T b) {     return a / gcd(a, b) * b;   }   using namespace std;   const long long MOD = 1e9 + 7;   vector<int> p, q;   long long res[200005];   void act() {     long long a, b, c, d, cnt = 0;     cin >> a >> b >> c >> d;     for (int i = 1; i <= c; i++) p.push_back(2);     for (int i = 1; i <= a; i++) p.push_back(0);     for (int i = 1; i <= d; i++) q.push_back(3);     for (int i = 1; i <= b; i++) q.push_back(1);     if (p.size() <= q.size()) swap(p, q);     for (int i = 0; i < p.size(); i++) {       res[++cnt] = p[i];       if (i < q.size()) res[++cnt] = q[i];     }     for (int i = 1; i < cnt; i++)       if (abs(res[i] - res[i + 1]) != 1) {         cout <<  NO               <<   n ;         return;       }     cout <<  YES           <<   n ;     for (int i = 1; i <= cnt; i++) cout << res[i] <<    ;   }   int main() {     int t = 1;     while (t--) act();   }   