#include <bits/stdc++.h>
using namespace std;
template <typename T>
using vc = vector<T>;
using pii = pair<long long, long long>;
void xmax(long long& a, long long b) { a = max(a, b); }
void xmin(long long& a, long long b) { a = min(a, b); }
void print(vc<long long>& a, string second) {
  cerr << second << " : ";
  for (long long i = 0; i < a.size(); i++) {
    cerr << a[i] << " ";
  }
  cerr << endl;
}
string second;
vc<char> b{'0', '4', '7'};
long long anz_total(vc<long long> a, long long last) {
  for (long long i = 0; i < 4; i++)
    if (a[i] < 0) return 1e9;
  if (a[2] == 0 && a[3] == 0) {
    if (last == 1) {
      if (a[1] != 0) return a[1] + a[0] + 1;
      return a[0];
    }
    if (last == 2) {
      if (a[0] != 0) return a[1] + a[0] + 1;
      return a[1];
    }
    if (a[1] != 0 && a[0] != 0) return a[1] + a[0] + 1;
    return a[1] + a[0];
  }
  long long needa;
  long long needb;
  long long add = 0;
  long long anz_null = 0;
  if (last == 1) {
    if (a[2] > a[3]) {
      needa = a[2] - 1;
      needb = a[2];
      anz_null = a[2] - a[3] - 1;
    } else {
      needa = needb = a[3];
      anz_null = a[3] - a[2];
    }
  }
  if (last == 2) {
    if (a[3] > a[2]) {
      needa = a[3];
      needb = a[3] - 1;
      anz_null = a[3] - a[2] - 1;
    } else {
      needa = needb = a[3];
      anz_null = a[2] - a[3];
    }
  }
  if (last == 0) {
    needa = max(a[2], a[3]);
    needb = max(a[2], a[3]);
    anz_null = abs(a[2] - a[3]);
    if (a[2] == a[3]) {
      add = 1;
    }
  }
  if (a[0] < needa) return 1e9;
  if (a[1] < needb) return 1e9;
  if (a[0] + a[1] < needa + needb + add) return 1e9;
  if (anz_null > 0) return 1e9;
  return anz_null + a[0] + a[1];
}
void add_next(vc<long long> a, long long last) {
  long long l = 1e9;
  if (a[0] + a[1] + a[2] + a[3] == 0) return;
  vc<long long> res(3);
  vc<vc<long long> > c(3);
  for (long long i = 0; i < 3; i++) {
    c[i] = a;
    if (i == 1) {
      c[i][0]--;
      if (last == 2) {
        c[i][3]--;
      }
    }
    if (i == 2) {
      c[i][1]--;
      if (last == 1) {
        c[i][2]--;
      }
    }
    res[i] = anz_total(c[i], i);
    if (i == 0) res[i] = 1e9;
    xmin(l, res[i]);
  }
  if (l > 1e8) {
    cout << "-1";
    return;
  }
  for (long long i = 0; i < 3; i++) {
    if (l == res[i]) {
      second += b[i];
      cout << b[i];
      return add_next(c[i], i);
    }
  }
}
signed main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  vc<long long> a(4);
  for (long long i = 0; i < 4; i++) cin >> a[i];
  if (abs(a[2] - a[3]) > 1) {
    cout << "-1";
    return 0;
  }
  if (a[2] == a[3] + 1) {
    if (a[0] < a[2] || a[1] < a[2]) {
      cout << "-1";
      return 0;
    }
    while (a[0] > a[2]) {
      cout << "4";
      a[0]--;
    }
    for (long long i = 0; i < a[2]; i++) {
      cout << "47";
    }
    while (a[1] > a[2]) {
      cout << "7";
      a[1]--;
    }
  }
  if (a[3] == a[2] + 1) {
    if (a[0] < a[3] || a[1] < a[3]) {
      cout << "-1";
      return 0;
    }
    cout << "7";
    while (a[0] > a[3]) {
      cout << "4";
      a[0]--;
    }
    for (long long i = 0; i < a[2]; i++) {
      cout << "47";
    }
    while (a[1] > a[3]) {
      cout << "7";
      a[1]--;
    }
    cout << "4";
  }
  if (a[2] == a[3]) {
    if (a[0] < a[2] || a[1] < a[2]) {
      cout << "-1";
      return 0;
    }
    if (a[0] > a[2]) {
      while (a[0] > a[2] + 1) {
        cout << "4";
        a[0]--;
      }
      for (long long i = 0; i < a[2]; i++) {
        cout << "47";
      }
      while (a[1] > a[2]) {
        cout << "7";
        a[1]--;
      }
      cout << "4";
    } else if (a[1] > a[2]) {
      cout << "7";
      for (long long i = 0; i < a[2]; i++) {
        cout << "47";
      }
      while (a[1] > 1 + a[2]) {
        cout << "7";
        a[1]--;
      }
    } else {
      cout << "-1";
      return 0;
    }
  }
}
