import java.util.Scanner;
public class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        int a = sc.nextInt();
        int b = sc.nextInt();
        int c = sc.nextInt();
        int x = sc.nextInt();
        int solution = 0;
        if(a!=0 && b!=0 && c!=0){
            for(int  i = a; i>=0; i--){
                for(int j = b; j>=0; j--){
                    for(int k = c; k>=0; k--){
                        if((500*i)+(100*j)+(50*k)==x) solution++;
                    }
                }
            }
        }else if(a!=0 && b!=0 && c==0){
            for(int  i = a; i>=0; i--){
                for(int j = b; j>=0; j--){
                    if((500*i)+(100*j)==x) solution++;
                }
            }
        }else if(a!=0 && b==0 && c!=0){
            for(int  i = a; i>=0; i--){
                for(int j = c; j>=0; j--){
                    if((500*i)+(50*j)==x) solution++;
                }
            }
        }else if(a!=0 && b==0 && c==0){
            for(int  i = a; i>=0; i--){
                if(500*i==x) solution++;
            }
        }else if(a==0 && b!=0 && c!=0){
            for(int  i = b; i>=0; i--){
                for(int j = c; j>=0; j--){
                    if((100*i)+(50*j)==x) solution++;
                }
            }
        }else if(a==0 && b!=0 && c==0){
            for(int  i = b; i>=0; i--){
                if((100*i)==x) solution++;
            }
        }else if(a==0 && b==0 && c!=0){
            for(int  i = c; i>=0; i--){
                if(50*i==x) solution++;
            }
        }else{
            System.out.println(solution); 
        }
        System.out.println(solution);
    }
}
/tmp/hf-datasets-cache/medium/datasets/42704881117311-config-parquet-and-info-qiankunmu-Project_CodeNet-896c9d36/hub/datasets--qiankunmu--Project_CodeNet_Python800_and_Java250/snapshots/c899fde44a77ba1cc14973ed3de064e4ff3aadc7/Project_CodeNet_Java250.tar.gz