func_code_string: #include <bits/stdc++.h>   using namespace std;   const double EPS = 1e-9;   struct DDMY {     ostringstream o;     template <class T>     DDMY &operator,(const T &t) {       o << t <<  , ;       return *this;     }     string operator*() { return o.str().substr(0, o.str().size() - 1); }   };   template <class T>   std::ostream &operator<<(std::ostream &o, const std::vector<T> &v) {     o <<  [ ;     for (std::size_t i = 0; i < v.size(); i++)       o << v[i] << (i < v.size() - 1 ?  ,  :   );     return o <<  ] ;   }   template <class T, class U>   std::ostream &operator<<(std::ostream &o, const std::pair<T, U> &v) {     return o << v.first <<  :  << v.second;   }   template <class T, class U>   std::ostream &operator<<(std::ostream &o, const std::map<T, U> &v) {     o <<  { ;     typename std::map<T, U>::const_iterator i = v.begin(), j = i;     ++j;     for (; i != v.end(); ++i, ++j) o << *i << (j != v.end() ?  ,  :   );     return o <<  } ;   }   template <class T>   std::ostream &operator<<(std::ostream &o, const std::set<T> &v) {     o <<  { ;     typename std::set<T>::const_iterator i = v.begin(), j = i;     ++j;     for (; i != v.end(); ++i, ++j) o << *i << (j != v.end() ?  ,  :   );     return o <<  } ;   }   void error() {     cout << -1 << endl;     exit(0);   }   int main(int argc, char *argv[]) {     ios::sync_with_stdio(false);     int a1, a2, a3, a4;     cin >> a1 >> a2 >> a3 >> a4;     if (max(a3, a4) > a1 || max(a3, a4) > a2) {       error();     }     string line;     if (a3 >= a4) {       for (int i = 0; i < a3; i++) {         line +=  47 ;       }       a1 -= a3;       a2 -= a3;       a4 -= a3 - 1;       if (a1 < 0 || a2 < 0 || a4 < 0) {         error();       }       if (a4 == 1) {         if (a1 == 0) {           if (a2 > 0) {             line =  7  + line;             a2--;             if (a2 > 0) line += string(a2,  7 );           } else {             error();           }         } else {           line += string(a2,  7 );           line +=  4 ;           a1--;         }       } else if (a4 == 0) {         line += string(a2,  7 );       } else {         error();       }       if (a1 > 0) line = string(a1,  4 ) + line;     } else {       for (int i = 0; i < a4; i++) {         line +=  74 ;       }       a1 -= a4;       a2 -= a4;       a3 -= a4 - 1;       if (a1 < 0 || a2 < 0 || a4 < 0) {         error();       }       if (a3 == 0) {         if (a4 > 1) {           line = line.substr(0, line.size() - 2);           line = line.substr(2);           line =  7  + string(a1 + 1,  4 ) + line;           line += string(a2 + 1,  7 ) +  4 ;         } else if (a4 == 1) {           a1 += a4;           a2 += a4;           if (a2 > 0 && a1 > 0) {             line = string(a2,  7 ) + string(a1,  4 );           } else {             error();           }         } else if (a4 == 0) {           if (a1 == 0 || a2 == 0) {             if (a1 > 0) {               line = string(a1,  4 );             } else if (a2 > 0) {               line = string(a2,  7 );             }           } else {             error();           }         } else {           error();         }       } else {         error();       }     }     cout << line << endl;     return 0;   }   