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
import java.io.*;
import java.math.BigInteger;
import java.util.*;




public class Main {
	

	public static class FastReader {
		BufferedReader br;
		StringTokenizer root;
		
 
		public FastReader() {
			br = new BufferedReader(new InputStreamReader(System.in));
		}
 
		String next() {
			while (root == null || !root.hasMoreTokens()) {
				try {
					root = new StringTokenizer(br.readLine());
				} catch (Exception addd) {
					addd.printStackTrace();
				}
			}
			return root.nextToken();
		}
 
		int nextInt() {
			return Integer.parseInt(next());
		}
 
		double nextDouble() {
			return Double.parseDouble(next());
		}
 
		long nextLong() {
			return Long.parseLong(next());
		}
 
		String nextLine() {
			String str = "";
			try {
				str = br.readLine();
			} catch (Exception addd) {
				addd.printStackTrace();
			}
			return str;
		}
	}
	
	public static PrintWriter out = new PrintWriter (new BufferedOutputStream(System.out));
	
	public static FastReader sc = new FastReader();
 
	static int mod = (int) (1e9+7),MAX=(int) (2e5);
    static List<Integer>[] edges;
	
	public static void main(String[] args){
	
		int a4 = sc.nextInt();
		int a7 = sc.nextInt();
		int a47 = sc.nextInt();
		int a74 = sc.nextInt();
	    StringBuilder sb = new StringBuilder();
	    
	        if (Math.abs(a47 - a74) > 1) out.print(-1);
	        else {
	            if (a47 == a74 + 1) {
	                while (a47-- > 0) {
	                    sb.append("47");
	                    a4--;
	                    a7--;
	                }
	            } else if (a47 == a74 - 1) {
	                while (a74-- > 0) {
	                    sb.append("74");
	                    a4--;
	                    a7--;
	                }
	            } else if (a47 == a74) {
	                while (a47-- > 0) {
	                    sb.append("47");
	                    a4--;
	                    a7--;
	                }
	                if (a4 > 0) {
	                    sb.append(4);
	                    a4--;
	                } else {
	                    sb = (new StringBuilder("7")).append(sb);
	                    a7--;
	                }
	            }
	 
	            if (a4 < 0 || a7 < 0) out.print(-1);
	            else {
	                int last7=0;
	                for(int i=sb.length()-1;i>=0;i--)if(sb.charAt(i)=='7'){
	                    last7=i;break;
	                }
	                for (int i = 0; i < sb.length(); i++) {
	                    out.print(sb.charAt(i));
	                    if (sb.charAt(i) == '4' && a4 > 0) {
	                        while (a4-- > 0) out.print(4);
	                    } else if (i==last7 && a7 > 0) {
	                        while (a7-- > 0) out.print(7);
	                    }
	                }
	            }
	  
	}
	        out.close();
	}
	
}



