#include <bits/stdc++.h>   using namespace std;   const int maxint = -1u >> 1;   template <class T>   bool get_max(T& a, const T& b) {     return b > a ? a = b, 1 : 0;   }   template <class T>   bool get_min(T& a, const T& b) {     return b < a ? a = b, 1 : 0;   }   const int maxn = 1000000 + 5;   int n, m, r1, r2, sv[maxn];   void output() {     for (int i = n; i >= 0; i--) {       for (int j = 0; j < sv[i]; j++) {         printf( 7 );       }       if (i) printf( 4 );     }     printf(  n );   }   int main() {     scanf( %d%d%d%d , &n, &m, &r1, &r2);     memset(sv, 0, sizeof(sv));     for (int i = 1; i < n; i++) {       if (r1 && r2) {         if (!m) {           printf( -1 n );           return 0;         } else {           r1--;           r2--;           sv[i]++;           m--;         }       }     }     if (r1) {       if (!m) {         printf( -1 n );         return 0;       } else {         r1--;         sv[0]++;         m--;       }     }     if (r2) {       if (!m) {         printf( -1 n );         return 0;       } else {         r2--;         sv[n]++;         m--;       }     }     if (r1 + r2 != 0) {       printf( -1 n );       return 0;     }     if (sv[0]) {       sv[0] += m;     } else {       sv[1] += m;     }     output();     return 0;   }   