func_code_string: #include <bits/stdc++.h>   using namespace std;   const double PI = acos(-1);   template <typename T>   void chmin(T &x, const T &y) {     if (x > y) x = y;   }   template <typename T>   void chmax(T &x, const T &y) {     if (x < y) x = y;   }   template <typename T>   T gcd(T x, T y) {     return y ? gcd(y, x % y) : x;   }   template <class T>   inline bool read(T &ret) {     char c = getchar();     int sgn;     if (c == EOF) return 0;     while (c !=  -  && (c <  0  || c >  9 )) c = getchar();     sgn = (c ==  - ) ? -1 : 1;     ret = (c ==  - ) ? 0 : (c -  0 );     while (static_cast<void>(c = getchar()), c >=  0  && c <=  9 )       ret = ret * 10 + (c -  0 );     ret *= sgn;     return 1;   }   template <class T>   inline void write(T x) {     if (x > 9) out(x / 10);     putchar(x % 10 +  0 );   }   const int N = 1e5 + 5;   int x[4], y[4], an[N], n;   void doit(int j) {     int k = 0;     for (int i = 0; i < (int)(4); ++i) y[i] = x[i];     while (true) {       if (j == 4 || y[j] == 0) break;       an[k++] = j;       --y[j];       if (j > 0 && y[j - 1] > 0)         --j;       else         ++j;     }     if (k == n) {       cout <<  YES  << endl << an[0];       for (int i = 1; i < (int)(n); ++i) cout <<     << an[i];       cout << endl;       exit(0);     }   }   void solve(int times) {     for (int i = 0; i < (int)(4); ++i) cin >> x[i], n += x[i];     for (int j = 0; j < (int)(4); ++j) doit(j);     cout <<  NO  << endl;   }   void Init() {}   int main() {     ios::sync_with_stdio(false);     cin.tie(0);     cout.tie(0);     int times = 1;     {       solve(times++);       Init();     }     return 0;   }   