#include<stdio.h>
#include<stdlib.h>
int mat[100][100];
int max(int a,int b){
return ((a > b) ? a : b);
}
int min(int a,int b){
return a + b - max(a,b);
}
int cartoane(int l,int h,int a,int b){
int r1,r2,r3,r4,aux;
if(l==12 && h==13)
printf("");
if(a > l || b > h)
return 0;
if(mat[l][h] != 0)
return mat[l][h];
r1 = cartoane(min(a,h-b),max(a,h-b),a,b) + cartoane(l-a,h,a,b);
if(b <= l)
r2 = cartoane(l - b,h,a,b) + cartoane(min(b,h - a),max(b,l-h),a,b);
else
r2 = 0;
aux = 1 + max(r1,r2);
r3 = cartoane(min(l-a,b),max(l-a,b),a,b) + cartoane(min(h-b,l),max(h-b,l),a,b);
if(b <= l)
r4 = cartoane(min(l-b,a),max(l-b,a),a,b) + cartoane(min(l,h-a),max(l,h-a),a,b);
else
r4 = 0;
mat[l][h] = max(aux,1+max(r3,r4));
return mat[l][h];
}
int main(){
int l,h,a,b;
FILE *f,*g;
f = fopen("cartoane.in","r");
g = fopen("cartoane.out","w");
fscanf(f,"%d%d",&l,&h);
fscanf(f,"%d%d",&a,&b);
int nr = cartoane(l,h,a,b);
fprintf(g,"%d\n",nr);
fclose(f);
fclose(g);
return 0;
}