Petya loves lucky numbers very much. Everybody knows that lucky numbers are positive integers whose decimal record contains only the lucky digits 4 and 7. For example, numbers 47, 744, 4 are lucky and 5, 17, 467 are not.

Petya loves long lucky numbers very much. He is interested in the minimum lucky number d that meets some condition. Let cnt(x) be the number of occurrences of number x in number d as a substring. For example, if d = 747747, then cnt(4) = 2, cnt(7) = 4, cnt(47) = 2, cnt(74) = 2. Petya wants the following condition to fulfil simultaneously: cnt(4) = a1, cnt(7) = a2, cnt(47) = a3, cnt(74) = a4. Petya is not interested in the occurrences of other numbers. Help him cope with this task.

Input

The single line contains four integers a1, a2, a3 and a4 (1 ≤ a1, a2, a3, a4 ≤ 106).

Output

On the single line print without leading zeroes the answer to the problem — the minimum lucky number d such, that cnt(4) = a1, cnt(7) = a2, cnt(47) = a3, cnt(74) = a4. If such number does not exist, print the single number "-1" (without the quotes).

Examples

Input

2 2 1 1


Output

4774


Input

4 7 3 1


Output

-1
#include <bits/stdc++.h>
using namespace std;
const int MAXN = 2e6 + 6;
int n4, n7, n47, n74;
int cnt[MAXN];
int main() {
  cin.tie(0);
  cin.sync_with_stdio(0);
  cin >> n4 >> n7 >> n47 >> n74;
  if (abs(n47 - n74) > 1) {
    cout << -1;
    return 0;
  }
  if (n47 == n74 && n4 > n47) {
    for (int a = 0; a < n47; a++) {
      cnt[2 * a] = 1;
      cnt[2 * a + 1] = 1;
      n4--;
      n7--;
    }
    cnt[2 * n47] = 1;
    n4--;
    while (n4 > 0) {
      cnt[0]++;
      n4--;
    }
    while (n7 > 0) {
      cnt[2 * n47 - 1]++;
      n7--;
    }
  } else if (n47 == n74 && n4 <= n47) {
    cnt[1] = 1;
    n7--;
    for (int a = 1; a <= n47; a++) {
      cnt[2 * a] = 1;
      cnt[2 * a + 1] = 1;
      n4--;
      n7--;
    }
    while (n4 > 0) {
      cnt[2]++;
      n4--;
    }
    while (n7 > 0) {
      cnt[2 * n47 + 1]++;
      n7--;
    }
  } else if (n47 == n74 + 1) {
    for (int a = 0; a < n47; a++) {
      cnt[2 * a] = 1;
      cnt[2 * a + 1] = 1;
      n4--;
      n7--;
    }
    while (n4 > 0) {
      cnt[0]++;
      n4--;
    }
    while (n7 > 0) {
      cnt[2 * n47 - 1]++;
      n7--;
    }
  } else {
    cnt[1] = 1;
    n7--;
    for (int a = 1; a < n74; a++) {
      cnt[2 * a] = 1;
      cnt[2 * a + 1] = 1;
      n4--;
      n7--;
    }
    cnt[2 * n74] = 1;
    n4--;
    while (n4 > 0) {
      cnt[2]++;
      n4--;
    }
    while (n7 > 0) {
      cnt[2 * n74 - 1]++;
      n7--;
    }
  }
  if (n4 < 0 || n7 < 0) {
    cout << -1;
    return 0;
  }
  for (int a = 0; a < MAXN; a++) {
    while (cnt[a] > 0) {
      cout << ((a & 1) ? 7 : 4);
      cnt[a]--;
    }
  }
}
