#include <bits/stdc++.h>
#pragma comment(linker, "/stack:64000000")
using namespace std;
template <typename X>
inline X abs(const X& a) {
  return a < 0 ? -a : a;
}
template <typename X>
inline X sqr(const X& a) {
  return a * a;
}
const int INF = INT_MAX / 2;
const long double EPS = 1e-9;
const long double PI = 3.1415926535897932384626433832795;
const int N = 5000 * 1000 + 13;
int a[4];
int sz = 0;
char ans[N];
int cnt[4];
inline void error() {
  puts("-1");
  exit(0);
}
inline void print() {
  assert(cnt[2] == a[2] && cnt[3] == a[3]);
  assert(cnt[0] <= a[0] && cnt[1] <= a[1]);
  int last = -1;
  for (int i = 0; i < int(sz); i++)
    if (ans[i] == '7') last = i;
  for (int i = 0; i < int(sz); i++) {
    if (ans[i] == '4') {
      while (cnt[0] < a[0]) {
        putchar('4');
        cnt[0]++;
      }
    }
    if (i == last) {
      assert(ans[i] == '7');
      while (cnt[1] < a[1]) {
        putchar('7');
        cnt[1]++;
      }
    }
    putchar(ans[i]);
  }
  puts("");
  exit(0);
}
int main() {
  for (int i = 0; i < int(4); i++) cin >> a[i];
  if (abs(a[3] - a[2]) > 1) error();
  if (a[2] >= a[3]) {
    sz = 0;
    memset(cnt, 0, sizeof(cnt));
    for (int i = 0; i < int(a[2]); i++) ans[sz++] = '4', ans[sz++] = '7';
    cnt[0] = a[2];
    cnt[1] = a[2];
    cnt[2] = a[2];
    cnt[3] = a[2] - 1;
    if (a[2] == a[3]) ans[sz++] = '4', cnt[0]++, cnt[3]++;
    bool ok = true;
    for (int i = 0; i < int(4); i++)
      if (cnt[i] > a[i]) ok = false;
    if (ok) print();
  }
  if (a[3] >= a[2]) {
    sz = 0;
    memset(cnt, 0, sizeof(cnt));
    for (int i = 0; i < int(a[3]); i++) ans[sz++] = '7', ans[sz++] = '4';
    cnt[0] = a[3];
    cnt[1] = a[3];
    cnt[3] = a[3];
    cnt[2] = a[3] - 1;
    if (a[2] == a[3]) ans[sz++] = '7', cnt[1]++, cnt[2]++;
    bool ok = true;
    for (int i = 0; i < int(4); i++)
      if (cnt[i] > a[i]) ok = false;
    if (ok) print();
  }
  error();
  return 0;
}
