func_code_string: #include <bits/stdc++.h>   using namespace std;   vector<pair<pair<int, int>, int> > v;   int a[(int)(1e5 + 50)];   string s;   void solve() {     int n;     scanf( %d , &n);     for (int i = 1; i <= n; i++) {       int x;       scanf( %d , &x);       s += (char)(x +  0 );     }     for (int i = 0; i < s.size();) {       int st = i, len = 0;       char c = s[i];       while (i < s.size() && c == s[i]) {         len++;         i++;       }       v.push_back(make_pair(make_pair(st, len), (int)(c -  0 )));     }     int len = v.size();     if (v[len - 1].second == 1 ||         (v[len - 1].first.second == 2 && v[len - 1].second == 0 && len < 3)) {       printf( NO );       return;     }     printf( YES n );     string ans;     if (v[len - 1].first.second == 2) {       for (int i = 0; i < len - 3; i++) {         char toAdd = (char)(v[i].second +  0 );         for (int j = 0; j < v[i].first.second; j++) {           ans += toAdd;           ans +=  -> ;         }       }       for (int j = 0; j < v[len - 3].first.second - 1; j++) {         ans +=  0 ;         ans +=  -> ;       }       ans +=  (0->( ;       for (int i = 0; i < v[len - 2].first.second; i++) {         ans +=  1 ;         ans +=  -> ;       }       ans +=  0))->0 ;       cout << ans;       return;     }     if (v[len - 1].first.second % 2 == 0) {       ans +=  ( ;       for (int i = 0; i < v[len - 1].first.second - 3; i++) {         ans +=  0-> ;       }       ans +=  (0->0) ;       ans +=  ->0 ;       ans +=  ) ;     } else {       ans +=  ( ;       for (int i = 0; i < v[len - 1].first.second - 1; i++) {         ans +=  0-> ;       }       ans +=  0 ;       ans +=  ) ;     }     if (len - 1 == 0) {       cout << ans;       return;     }     reverse(ans.begin(), ans.end());     ans +=  >- ;     ans +=  )1 ;     for (int i = 0; i < v[len - 2].first.second - 1; i++) {       ans +=  >-1 ;     }     ans +=  ( ;     for (int i = len - 3; i >= 0; i--) {       ans +=  >- ;       char toAdd = (char)(v[i].second +  0 );       int curlen = v[i].first.second;       for (int j = 0; j < curlen - 1; j++) {         ans += toAdd;         ans +=  >- ;       }       ans += toAdd;     }     reverse(ans.begin(), ans.end());     cout << ans;   }   int main() {     int t = 1;     for (int i = 1; i <= t; i++) {       solve();     }     return 0;   }   