func_code_string: #include <bits/stdc++.h>   using namespace std;   const int N = 1e5 + 5;   const int M = 1e5 + 5;   bool dn = false;   int n;   bool check(int res[]) {     for (int i = 1; i < n; i++) {       if (abs(res[i] - res[i - 1]) != 1) {         return false;       }     }     cout <<  YES n ;     for (int i = 0; i < n; i++) {       cout << res[i] <<    ;     }     cout << endl;     dn = true;     return true;   }   int main() {     ios_base::sync_with_stdio(false);     int a, b, c, d;     cin >> a >> b >> c >> d;     if (a > b + 1 || d > c + 1) {       cout <<  NO n ;       return 0;     }     n = a + b + c + d;     int i, j, f;     for (i = 0; i < 2; i++) {       for (j = 0; j < 2; j++) {         int ta, tb, tc, td;         ta = a;         tb = b;         tc = c;         td = d;         int res[N];         int id1 = 0, id2 = n - 1;         if (i == 0) {           if (ta > 0) {             if (tb < ta)               continue;             else {               tb -= ta;               for (id1 = 0; id1 < 2 * ta; id1++) {                 if (id1 % 2 == 0)                   res[id1] = 1;                 else                   res[id1] = 0;               }             }           }         } else {           if (ta > 0) {             if (tb < ta - 1)               continue;             else {               tb -= ta - 1;               for (id1 = 0; id1 < 2 * ta - 1; id1++) {                 if (id1 % 2 == 0)                   res[id1] = 0;                 else                   res[id1] = 1;               }             }           }         }         if (j == 0) {           if (td > 0) {             if (tc < td)               continue;             else {               tc -= td;               for (id2 = 0; id2 < 2 * td; id2++) {                 if (id2 % 2 == 0)                   res[n - 1 - id2] = 2;                 else                   res[n - 1 - id2] = 3;               }             }           }         } else {           if (td > 0) {             if (tc < td - 1)               continue;             else {               tc -= td - 1;               for (id2 = 0; id2 < 2 * td - 1; id2++) {                 if (id2 % 2 == 0)                   res[n - 1 - id2] = 3;                 else                   res[n - 1 - id2] = 2;               }             }           }         }         if (tc == tb + 1) {           for (int f = 0; f < tc + tb; f++) {             if (f % 2 == 0)               res[f + id1] = 2;             else               res[f + id1] = 1;           }           check(res);           if (dn) return 0;         }         if (tb == tc + 1) {           for (int f = 0; f < tc + tb; f++) {             if (f % 2 == 0)               res[f + id1] = 1;             else               res[f + id1] = 2;           }           check(res);           if (dn) return 0;         }         if (tb == tc) {           for (int f = 0; f < tc + tb; f++) {             if (f % 2 == 0)               res[f + id1] = 2;             else               res[f + id1] = 1;           }           check(res);           if (dn) return 0;           for (int f = 0; f < tc + tb; f++) {             if (f % 2 == 0)               res[f + id1] = 1;             else               res[f + id1] = 2;           }           check(res);           if (dn) return 0;         }       }     }     cout <<  NO n ;     return 0;   }   