import java.util.Scanner;


class Main{

	public static void main(String[] args) {

		Scanner scan = new Scanner(System.in);
		int A = scan.nextInt();
		int B = scan.nextInt();
		int C = scan.nextInt();
		int X = scan.nextInt();

		int ans = 0;

		for(int i = 0;i<= A;i++){
			for(int j= 0;j <= B;j++){
				for(int m = 0;m <= C;m++){
					ans += count(i,j,m,X);
							
				}
			}
		}



		System.out.println(ans);

	}
	
	static int count(int a,int b,int c,int X){
		if(X == a*500+b*100+c*50){
			return 1;
		}else{
			return 0;
		}
	}
	
	
}
class Pair implements Comparable{
	int from;
	int end;

	public Pair(int a,int b) {
		this.from = a;
		this.end = b;

	}
	@Override
	public int compareTo(Object other) {
		Pair otherpair = (Pair)other;

		return end - otherpair.end;
	}
}
 import java.util.Scanner; Scanner java.util class Main{

	public static void main(String[] args) {

		Scanner scan = new Scanner(System.in);
		int A = scan.nextInt();
		int B = scan.nextInt();
		int C = scan.nextInt();
		int X = scan.nextInt();

		int ans = 0;

		for(int i = 0;i<= A;i++){
			for(int j= 0;j <= B;j++){
				for(int m = 0;m <= C;m++){
					ans += count(i,j,m,X);
							
				}
			}
		}



		System.out.println(ans);

	}
	
	static int count(int a,int b,int c,int X){
		if(X == a*500+b*100+c*50){
			return 1;
		}else{
			return 0;
		}
	}
	
	
} Main public static void main(String[] args) {

		Scanner scan = new Scanner(System.in);
		int A = scan.nextInt();
		int B = scan.nextInt();
		int C = scan.nextInt();
		int X = scan.nextInt();

		int ans = 0;

		for(int i = 0;i<= A;i++){
			for(int j= 0;j <= B;j++){
				for(int m = 0;m <= C;m++){
					ans += count(i,j,m,X);
							
				}
			}
		}



		System.out.println(ans);

	} main {

		Scanner scan = new Scanner(System.in);
		int A = scan.nextInt();
		int B = scan.nextInt();
		int C = scan.nextInt();
		int X = scan.nextInt();

		int ans = 0;

		for(int i = 0;i<= A;i++){
			for(int j= 0;j <= B;j++){
				for(int m = 0;m <= C;m++){
					ans += count(i,j,m,X);
							
				}
			}
		}



		System.out.println(ans);

	} Scanner scan = new Scanner(System.in); scan new Scanner(System.in) int A = scan.nextInt(); A scan.nextInt() scan.nextInt scan int B = scan.nextInt(); B scan.nextInt() scan.nextInt scan int C = scan.nextInt(); C scan.nextInt() scan.nextInt scan int X = scan.nextInt(); X scan.nextInt() scan.nextInt scan int ans = 0; ans 0 for(int i = 0;i<= A;i++){
			for(int j= 0;j <= B;j++){
				for(int m = 0;m <= C;m++){
					ans += count(i,j,m,X);
							
				}
			}
		} int i = 0; int i = 0; i 0 i<= A i A i++ i++ i {
			for(int j= 0;j <= B;j++){
				for(int m = 0;m <= C;m++){
					ans += count(i,j,m,X);
							
				}
			}
		} {
			for(int j= 0;j <= B;j++){
				for(int m = 0;m <= C;m++){
					ans += count(i,j,m,X);
							
				}
			}
		} for(int j= 0;j <= B;j++){
				for(int m = 0;m <= C;m++){
					ans += count(i,j,m,X);
							
				}
			} int j= 0; int j= 0; j 0 j <= B j B j++ j++ j {
				for(int m = 0;m <= C;m++){
					ans += count(i,j,m,X);
							
				}
			} {
				for(int m = 0;m <= C;m++){
					ans += count(i,j,m,X);
							
				}
			} for(int m = 0;m <= C;m++){
					ans += count(i,j,m,X);
							
				} int m = 0; int m = 0; m 0 m <= C m C m++ m++ m {
					ans += count(i,j,m,X);
							
				} {
					ans += count(i,j,m,X);
							
				} ans += count(i,j,m,X) ans count(i,j,m,X) count i j m X System.out.println(ans) System.out.println System.out System System.out ans String[] args args static int count(int a,int b,int c,int X){
		if(X == a*500+b*100+c*50){
			return 1;
		}else{
			return 0;
		}
	} count {
		if(X == a*500+b*100+c*50){
			return 1;
		}else{
			return 0;
		}
	} if(X == a*500+b*100+c*50){
			return 1;
		}else{
			return 0;
		} X == a*500+b*100+c*50 X a*500+b*100+c*50 a*500+b*100+c*50 a*500 a 500 b*100 b 100 c*50 c 50 {
			return 1;
		} return 1; 1 {
			return 0;
		} return 0; 0 int a a int b b int c c int X X class Pair implements Comparable{
	int from;
	int end;

	public Pair(int a,int b) {
		this.from = a;
		this.end = b;

	}
	@Override
	public int compareTo(Object other) {
		Pair otherpair = (Pair)other;

		return end - otherpair.end;
	}
} Pair int from; from int end; end public Pair(int a,int b) {
		this.from = a;
		this.end = b;

	} Pair {
		this.from = a;
		this.end = b;

	} this.from = a this.from this this.from a this.end = b this.end this this.end b int a a int b b @Override
	public int compareTo(Object other) {
		Pair otherpair = (Pair)other;

		return end - otherpair.end;
	} compareTo {
		Pair otherpair = (Pair)other;

		return end - otherpair.end;
	} Pair otherpair = (Pair)other; otherpair (Pair)other return end - otherpair.end; end - otherpair.end end otherpair.end otherpair otherpair.end Object other other Comparable
import java.util.Scanner;


class Main{

	public static void main(String[] args) {

		Scanner scan = new Scanner(System.in);
		int A = scan.nextInt();
		int B = scan.nextInt();
		int C = scan.nextInt();
		int X = scan.nextInt();

		int ans = 0;

		for(int i = 0;i<= A;i++){
			for(int j= 0;j <= B;j++){
				for(int m = 0;m <= C;m++){
					ans += count(i,j,m,X);
							
				}
			}
		}



		System.out.println(ans);

	}
	
	static int count(int a,int b,int c,int X){
		if(X == a*500+b*100+c*50){
			return 1;
		}else{
			return 0;
		}
	}
	
	
}
class Pair implements Comparable{
	int from;
	int end;

	public Pair(int a,int b) {
		this.from = a;
		this.end = b;

	}
	@Override
	public int compareTo(Object other) {
		Pair otherpair = (Pair)other;

		return end - otherpair.end;
	}
}

