import java.util.Scanner;


public class Main{
    public  static void main(String[] args) {
    	try (Scanner sc = new Scanner(System.in)) {
    		int[] dp=new int[20001];
    		int A=sc.nextInt();
    		int B=sc.nextInt();
    		int C=sc.nextInt();
    		int X=sc.nextInt();
    		for(int i=0; i<=A; i++) {
    			for(int j=0; j<=B; j++) {
    				for(int k=0; k<=C; k++) {
    					if(i*500+j*100+k*50<=X) {
    						dp[i*500+j*100+k*50]+=1;
    					}
    				}
    			}
    		}
    		System.out.println(dp[X]);
    	}
    }
} import java.util.Scanner; Scanner java.util public class Main{
    public  static void main(String[] args) {
    	try (Scanner sc = new Scanner(System.in)) {
    		int[] dp=new int[20001];
    		int A=sc.nextInt();
    		int B=sc.nextInt();
    		int C=sc.nextInt();
    		int X=sc.nextInt();
    		for(int i=0; i<=A; i++) {
    			for(int j=0; j<=B; j++) {
    				for(int k=0; k<=C; k++) {
    					if(i*500+j*100+k*50<=X) {
    						dp[i*500+j*100+k*50]+=1;
    					}
    				}
    			}
    		}
    		System.out.println(dp[X]);
    	}
    }
} Main public  static void main(String[] args) {
    	try (Scanner sc = new Scanner(System.in)) {
    		int[] dp=new int[20001];
    		int A=sc.nextInt();
    		int B=sc.nextInt();
    		int C=sc.nextInt();
    		int X=sc.nextInt();
    		for(int i=0; i<=A; i++) {
    			for(int j=0; j<=B; j++) {
    				for(int k=0; k<=C; k++) {
    					if(i*500+j*100+k*50<=X) {
    						dp[i*500+j*100+k*50]+=1;
    					}
    				}
    			}
    		}
    		System.out.println(dp[X]);
    	}
    } main {
    	try (Scanner sc = new Scanner(System.in)) {
    		int[] dp=new int[20001];
    		int A=sc.nextInt();
    		int B=sc.nextInt();
    		int C=sc.nextInt();
    		int X=sc.nextInt();
    		for(int i=0; i<=A; i++) {
    			for(int j=0; j<=B; j++) {
    				for(int k=0; k<=C; k++) {
    					if(i*500+j*100+k*50<=X) {
    						dp[i*500+j*100+k*50]+=1;
    					}
    				}
    			}
    		}
    		System.out.println(dp[X]);
    	}
    } try (Scanner sc = new Scanner(System.in)) {
    		int[] dp=new int[20001];
    		int A=sc.nextInt();
    		int B=sc.nextInt();
    		int C=sc.nextInt();
    		int X=sc.nextInt();
    		for(int i=0; i<=A; i++) {
    			for(int j=0; j<=B; j++) {
    				for(int k=0; k<=C; k++) {
    					if(i*500+j*100+k*50<=X) {
    						dp[i*500+j*100+k*50]+=1;
    					}
    				}
    			}
    		}
    		System.out.println(dp[X]);
    	} {
    		int[] dp=new int[20001];
    		int A=sc.nextInt();
    		int B=sc.nextInt();
    		int C=sc.nextInt();
    		int X=sc.nextInt();
    		for(int i=0; i<=A; i++) {
    			for(int j=0; j<=B; j++) {
    				for(int k=0; k<=C; k++) {
    					if(i*500+j*100+k*50<=X) {
    						dp[i*500+j*100+k*50]+=1;
    					}
    				}
    			}
    		}
    		System.out.println(dp[X]);
    	} Scanner sc = new Scanner(System.in) Scanner sc = new Scanner(System.in) new Scanner(System.in) int[] dp=new int[20001]; dp new int[20001] 20001 int A=sc.nextInt(); A sc.nextInt() sc.nextInt sc int B=sc.nextInt(); B sc.nextInt() sc.nextInt sc int C=sc.nextInt(); C sc.nextInt() sc.nextInt sc int X=sc.nextInt(); X sc.nextInt() sc.nextInt sc for(int i=0; i<=A; i++) {
    			for(int j=0; j<=B; j++) {
    				for(int k=0; k<=C; k++) {
    					if(i*500+j*100+k*50<=X) {
    						dp[i*500+j*100+k*50]+=1;
    					}
    				}
    			}
    		} int i=0; int i=0; i 0 i<=A i A i++ i++ i {
    			for(int j=0; j<=B; j++) {
    				for(int k=0; k<=C; k++) {
    					if(i*500+j*100+k*50<=X) {
    						dp[i*500+j*100+k*50]+=1;
    					}
    				}
    			}
    		} {
    			for(int j=0; j<=B; j++) {
    				for(int k=0; k<=C; k++) {
    					if(i*500+j*100+k*50<=X) {
    						dp[i*500+j*100+k*50]+=1;
    					}
    				}
    			}
    		} for(int j=0; j<=B; j++) {
    				for(int k=0; k<=C; k++) {
    					if(i*500+j*100+k*50<=X) {
    						dp[i*500+j*100+k*50]+=1;
    					}
    				}
    			} int j=0; int j=0; j 0 j<=B j B j++ j++ j {
    				for(int k=0; k<=C; k++) {
    					if(i*500+j*100+k*50<=X) {
    						dp[i*500+j*100+k*50]+=1;
    					}
    				}
    			} {
    				for(int k=0; k<=C; k++) {
    					if(i*500+j*100+k*50<=X) {
    						dp[i*500+j*100+k*50]+=1;
    					}
    				}
    			} for(int k=0; k<=C; k++) {
    					if(i*500+j*100+k*50<=X) {
    						dp[i*500+j*100+k*50]+=1;
    					}
    				} int k=0; int k=0; k 0 k<=C k C k++ k++ k {
    					if(i*500+j*100+k*50<=X) {
    						dp[i*500+j*100+k*50]+=1;
    					}
    				} {
    					if(i*500+j*100+k*50<=X) {
    						dp[i*500+j*100+k*50]+=1;
    					}
    				} if(i*500+j*100+k*50<=X) {
    						dp[i*500+j*100+k*50]+=1;
    					} i*500+j*100+k*50<=X i*500+j*100+k*50 i*500+j*100+k*50 i*500 i 500 j*100 j 100 k*50 k 50 X {
    						dp[i*500+j*100+k*50]+=1;
    					} dp[i*500+j*100+k*50]+=1 dp[i*500+j*100+k*50] dp i*500+j*100+k*50 i*500+j*100+k*50 i*500 i 500 j*100 j 100 k*50 k 50 1 System.out.println(dp[X]) System.out.println System.out System System.out dp[X] dp X String[] args args public class Main{
    public  static void main(String[] args) {
    	try (Scanner sc = new Scanner(System.in)) {
    		int[] dp=new int[20001];
    		int A=sc.nextInt();
    		int B=sc.nextInt();
    		int C=sc.nextInt();
    		int X=sc.nextInt();
    		for(int i=0; i<=A; i++) {
    			for(int j=0; j<=B; j++) {
    				for(int k=0; k<=C; k++) {
    					if(i*500+j*100+k*50<=X) {
    						dp[i*500+j*100+k*50]+=1;
    					}
    				}
    			}
    		}
    		System.out.println(dp[X]);
    	}
    }
} public class Main{
    public  static void main(String[] args) {
    	try (Scanner sc = new Scanner(System.in)) {
    		int[] dp=new int[20001];
    		int A=sc.nextInt();
    		int B=sc.nextInt();
    		int C=sc.nextInt();
    		int X=sc.nextInt();
    		for(int i=0; i<=A; i++) {
    			for(int j=0; j<=B; j++) {
    				for(int k=0; k<=C; k++) {
    					if(i*500+j*100+k*50<=X) {
    						dp[i*500+j*100+k*50]+=1;
    					}
    				}
    			}
    		}
    		System.out.println(dp[X]);
    	}
    }
} Main
import java.util.Scanner;


public class Main{
    public  static void main(String[] args) {
    	try (Scanner sc = new Scanner(System.in)) {
    		int[] dp=new int[20001];
    		int A=sc.nextInt();
    		int B=sc.nextInt();
    		int C=sc.nextInt();
    		int X=sc.nextInt();
    		for(int i=0; i<=A; i++) {
    			for(int j=0; j<=B; j++) {
    				for(int k=0; k<=C; k++) {
    					if(i*500+j*100+k*50<=X) {
    						dp[i*500+j*100+k*50]+=1;
    					}
    				}
    			}
    		}
    		System.out.println(dp[X]);
    	}
    }
}