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
规律:4774,有一个47,一个74;4747,有两个47,一个74;7474,有两个74,一个47;
要保证输出数字最小,那么要把多余的4尽量往前放,多余的7尽量往后放。
- 当c==d的时候,只有a>c(d)或者a==c(d)两种情况。
- a>c,先把多余的4输出(a-c-1个4),再输出c个47(这时有c个47,c-1个74),再把多余的7输出(b-c),最后输出一个4.
- a==c,先输出一个7,再输出c个47(这时有c个47,c个74),最后把剩余的7输出。
- 当c>d,输出a-d个4,再输出d个74,最后输出剩下的7。
- 当c<d,输出一个7,再输出c个47,再把剩余7输出,最后输出4。
#include<iostream>
#include<algorithm>
using namespace std;
int main(){
int a,b,c,d;
cin>>a>>b>>c>>d;
if((abs(c-d)==1||abs(c-d)==0)&&min(a,b)>=max(c,d)&&(a!=c||b!=d)){
int i;
if(c==d){
if(a>c){
for(i=0;i<a-c-1;i++) cout<<4;
for(i=0;i<c;i++) cout<<47;
for(i=0;i<b-c;i++) cout<<7;
cout<<4;
}else{
cout<<7;
for(i=0;i<c;i++) cout<<47;
for(i=0;i<b-c-1;i++) cout<<7;
}
}else if(c>d){
for(i=0;i<a-d;i++) cout<<4;
for(i=0;i<d;i++) cout<<74;
for(i=0;i<b-d;i++) cout<<7;
}else{
cout<<7;
for(i=0;i<a-c-1;i++) cout<<4;
for(i=0;i<c;i++) cout<<47;
for(i=0;i<b-c-1;i++) cout<<7;
cout<<4;
}
}else{
cout<<-1<<endl;
}
return 0;
}