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 count = 0;

		for (int aIdx = 0; aIdx <= a ; aIdx ++) {
			for(int bIdx = 0; bIdx <= b ; bIdx ++) {
				for(int cIdx = 0; cIdx <= c ; cIdx ++) {
					if(x== (aIdx * 500) + (bIdx * 100) + (cIdx * 50)) {
						count += 1;
					}
				}
			}
		}
		System.out.print(count);
		}
} import java.util.Scanner; Scanner java.util 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 count = 0;

		for (int aIdx = 0; aIdx <= a ; aIdx ++) {
			for(int bIdx = 0; bIdx <= b ; bIdx ++) {
				for(int cIdx = 0; cIdx <= c ; cIdx ++) {
					if(x== (aIdx * 500) + (bIdx * 100) + (cIdx * 50)) {
						count += 1;
					}
				}
			}
		}
		System.out.print(count);
		}
} 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 count = 0;

		for (int aIdx = 0; aIdx <= a ; aIdx ++) {
			for(int bIdx = 0; bIdx <= b ; bIdx ++) {
				for(int cIdx = 0; cIdx <= c ; cIdx ++) {
					if(x== (aIdx * 500) + (bIdx * 100) + (cIdx * 50)) {
						count += 1;
					}
				}
			}
		}
		System.out.print(count);
		} main {
		Scanner sc = new Scanner(System.in);

		int a = sc.nextInt();
		int b = sc.nextInt();
		int c = sc.nextInt();
		int x = sc.nextInt();
		int count = 0;

		for (int aIdx = 0; aIdx <= a ; aIdx ++) {
			for(int bIdx = 0; bIdx <= b ; bIdx ++) {
				for(int cIdx = 0; cIdx <= c ; cIdx ++) {
					if(x== (aIdx * 500) + (bIdx * 100) + (cIdx * 50)) {
						count += 1;
					}
				}
			}
		}
		System.out.print(count);
		} Scanner sc = new Scanner(System.in); sc new Scanner(System.in) 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 int count = 0; count 0 for (int aIdx = 0; aIdx <= a ; aIdx ++) {
			for(int bIdx = 0; bIdx <= b ; bIdx ++) {
				for(int cIdx = 0; cIdx <= c ; cIdx ++) {
					if(x== (aIdx * 500) + (bIdx * 100) + (cIdx * 50)) {
						count += 1;
					}
				}
			}
		} int aIdx = 0; int aIdx = 0; aIdx 0 aIdx <= a aIdx a aIdx ++ aIdx ++ aIdx {
			for(int bIdx = 0; bIdx <= b ; bIdx ++) {
				for(int cIdx = 0; cIdx <= c ; cIdx ++) {
					if(x== (aIdx * 500) + (bIdx * 100) + (cIdx * 50)) {
						count += 1;
					}
				}
			}
		} {
			for(int bIdx = 0; bIdx <= b ; bIdx ++) {
				for(int cIdx = 0; cIdx <= c ; cIdx ++) {
					if(x== (aIdx * 500) + (bIdx * 100) + (cIdx * 50)) {
						count += 1;
					}
				}
			}
		} for(int bIdx = 0; bIdx <= b ; bIdx ++) {
				for(int cIdx = 0; cIdx <= c ; cIdx ++) {
					if(x== (aIdx * 500) + (bIdx * 100) + (cIdx * 50)) {
						count += 1;
					}
				}
			} int bIdx = 0; int bIdx = 0; bIdx 0 bIdx <= b bIdx b bIdx ++ bIdx ++ bIdx {
				for(int cIdx = 0; cIdx <= c ; cIdx ++) {
					if(x== (aIdx * 500) + (bIdx * 100) + (cIdx * 50)) {
						count += 1;
					}
				}
			} {
				for(int cIdx = 0; cIdx <= c ; cIdx ++) {
					if(x== (aIdx * 500) + (bIdx * 100) + (cIdx * 50)) {
						count += 1;
					}
				}
			} for(int cIdx = 0; cIdx <= c ; cIdx ++) {
					if(x== (aIdx * 500) + (bIdx * 100) + (cIdx * 50)) {
						count += 1;
					}
				} int cIdx = 0; int cIdx = 0; cIdx 0 cIdx <= c cIdx c cIdx ++ cIdx ++ cIdx {
					if(x== (aIdx * 500) + (bIdx * 100) + (cIdx * 50)) {
						count += 1;
					}
				} {
					if(x== (aIdx * 500) + (bIdx * 100) + (cIdx * 50)) {
						count += 1;
					}
				} if(x== (aIdx * 500) + (bIdx * 100) + (cIdx * 50)) {
						count += 1;
					} x== (aIdx * 500) + (bIdx * 100) + (cIdx * 50) x (aIdx * 500) + (bIdx * 100) + (cIdx * 50) (aIdx * 500) + (bIdx * 100) + (cIdx * 50) (aIdx * 500) aIdx 500 (bIdx * 100) bIdx 100 (cIdx * 50) cIdx 50 {
						count += 1;
					} count += 1 count 1 System.out.print(count) System.out.print System.out System System.out count String[] args args 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 count = 0;

		for (int aIdx = 0; aIdx <= a ; aIdx ++) {
			for(int bIdx = 0; bIdx <= b ; bIdx ++) {
				for(int cIdx = 0; cIdx <= c ; cIdx ++) {
					if(x== (aIdx * 500) + (bIdx * 100) + (cIdx * 50)) {
						count += 1;
					}
				}
			}
		}
		System.out.print(count);
		}
} 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 count = 0;

		for (int aIdx = 0; aIdx <= a ; aIdx ++) {
			for(int bIdx = 0; bIdx <= b ; bIdx ++) {
				for(int cIdx = 0; cIdx <= c ; cIdx ++) {
					if(x== (aIdx * 500) + (bIdx * 100) + (cIdx * 50)) {
						count += 1;
					}
				}
			}
		}
		System.out.print(count);
		}
} Main
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 count = 0;

		for (int aIdx = 0; aIdx <= a ; aIdx ++) {
			for(int bIdx = 0; bIdx <= b ; bIdx ++) {
				for(int cIdx = 0; cIdx <= c ; cIdx ++) {
					if(x== (aIdx * 500) + (bIdx * 100) + (cIdx * 50)) {
						count += 1;
					}
				}
			}
		}
		System.out.print(count);
		}
}
