import java.util.Scanner;

// 提出時にclass Main に書き換え
public class Main {
	public static void main(String[] args)  {
		// 標準入力を受け取る
		Scanner sc = new Scanner(System.in);
		int A = sc.nextInt(); // int Aを受け取る
		int B = sc.nextInt(); // int Bを受け取る
		int C = sc.nextInt(); // int Cを受け取る
		int X = sc.nextInt(); // int Xを受け取る
		sc.close(); // 標準入力を終了

		int x = 0; // 合計金額をX円にする方法の数

		for(int a = 0; a <= A; a++) {
			for(int b = 0; b <= B; b++) {
				for(int c = 0; c <= C; c++) {
					if(500*a + 100*b + 50*c == X) {
						// 合計金額がX円にする方法
						x += 1;
					}
				}
			}
		}

		// xを出力
		System.out.println(x);
	}

} 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 Aを受け取る
		int B = sc.nextInt(); // int Bを受け取る
		int C = sc.nextInt(); // int Cを受け取る
		int X = sc.nextInt(); // int Xを受け取る
		sc.close(); // 標準入力を終了

		int x = 0; // 合計金額をX円にする方法の数

		for(int a = 0; a <= A; a++) {
			for(int b = 0; b <= B; b++) {
				for(int c = 0; c <= C; c++) {
					if(500*a + 100*b + 50*c == X) {
						// 合計金額がX円にする方法
						x += 1;
					}
				}
			}
		}

		// xを出力
		System.out.println(x);
	}

} Main public static void main(String[] args)  {
		// 標準入力を受け取る
		Scanner sc = new Scanner(System.in);
		int A = sc.nextInt(); // int Aを受け取る
		int B = sc.nextInt(); // int Bを受け取る
		int C = sc.nextInt(); // int Cを受け取る
		int X = sc.nextInt(); // int Xを受け取る
		sc.close(); // 標準入力を終了

		int x = 0; // 合計金額をX円にする方法の数

		for(int a = 0; a <= A; a++) {
			for(int b = 0; b <= B; b++) {
				for(int c = 0; c <= C; c++) {
					if(500*a + 100*b + 50*c == X) {
						// 合計金額がX円にする方法
						x += 1;
					}
				}
			}
		}

		// xを出力
		System.out.println(x);
	} main {
		// 標準入力を受け取る
		Scanner sc = new Scanner(System.in);
		int A = sc.nextInt(); // int Aを受け取る
		int B = sc.nextInt(); // int Bを受け取る
		int C = sc.nextInt(); // int Cを受け取る
		int X = sc.nextInt(); // int Xを受け取る
		sc.close(); // 標準入力を終了

		int x = 0; // 合計金額をX円にする方法の数

		for(int a = 0; a <= A; a++) {
			for(int b = 0; b <= B; b++) {
				for(int c = 0; c <= C; c++) {
					if(500*a + 100*b + 50*c == X) {
						// 合計金額がX円にする方法
						x += 1;
					}
				}
			}
		}

		// xを出力
		System.out.println(x);
	} 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 sc.close() sc.close sc int x = 0; x 0 for(int a = 0; a <= A; a++) {
			for(int b = 0; b <= B; b++) {
				for(int c = 0; c <= C; c++) {
					if(500*a + 100*b + 50*c == X) {
						// 合計金額がX円にする方法
						x += 1;
					}
				}
			}
		} int a = 0; int a = 0; a 0 a <= A a A a++ a++ a {
			for(int b = 0; b <= B; b++) {
				for(int c = 0; c <= C; c++) {
					if(500*a + 100*b + 50*c == X) {
						// 合計金額がX円にする方法
						x += 1;
					}
				}
			}
		} {
			for(int b = 0; b <= B; b++) {
				for(int c = 0; c <= C; c++) {
					if(500*a + 100*b + 50*c == X) {
						// 合計金額がX円にする方法
						x += 1;
					}
				}
			}
		} for(int b = 0; b <= B; b++) {
				for(int c = 0; c <= C; c++) {
					if(500*a + 100*b + 50*c == X) {
						// 合計金額がX円にする方法
						x += 1;
					}
				}
			} int b = 0; int b = 0; b 0 b <= B b B b++ b++ b {
				for(int c = 0; c <= C; c++) {
					if(500*a + 100*b + 50*c == X) {
						// 合計金額がX円にする方法
						x += 1;
					}
				}
			} {
				for(int c = 0; c <= C; c++) {
					if(500*a + 100*b + 50*c == X) {
						// 合計金額がX円にする方法
						x += 1;
					}
				}
			} for(int c = 0; c <= C; c++) {
					if(500*a + 100*b + 50*c == X) {
						// 合計金額がX円にする方法
						x += 1;
					}
				} int c = 0; int c = 0; c 0 c <= C c C c++ c++ c {
					if(500*a + 100*b + 50*c == X) {
						// 合計金額がX円にする方法
						x += 1;
					}
				} {
					if(500*a + 100*b + 50*c == X) {
						// 合計金額がX円にする方法
						x += 1;
					}
				} if(500*a + 100*b + 50*c == X) {
						// 合計金額がX円にする方法
						x += 1;
					} 500*a + 100*b + 50*c == X 500*a + 100*b + 50*c 500*a + 100*b + 50*c 500*a 500 a 100*b 100 b 50*c 50 c X {
						// 合計金額がX円にする方法
						x += 1;
					} x += 1 x 1 System.out.println(x) System.out.println System.out System System.out x String[] args args public class Main {
	public static void main(String[] args)  {
		// 標準入力を受け取る
		Scanner sc = new Scanner(System.in);
		int A = sc.nextInt(); // int Aを受け取る
		int B = sc.nextInt(); // int Bを受け取る
		int C = sc.nextInt(); // int Cを受け取る
		int X = sc.nextInt(); // int Xを受け取る
		sc.close(); // 標準入力を終了

		int x = 0; // 合計金額をX円にする方法の数

		for(int a = 0; a <= A; a++) {
			for(int b = 0; b <= B; b++) {
				for(int c = 0; c <= C; c++) {
					if(500*a + 100*b + 50*c == X) {
						// 合計金額がX円にする方法
						x += 1;
					}
				}
			}
		}

		// xを出力
		System.out.println(x);
	}

} public class Main {
	public static void main(String[] args)  {
		// 標準入力を受け取る
		Scanner sc = new Scanner(System.in);
		int A = sc.nextInt(); // int Aを受け取る
		int B = sc.nextInt(); // int Bを受け取る
		int C = sc.nextInt(); // int Cを受け取る
		int X = sc.nextInt(); // int Xを受け取る
		sc.close(); // 標準入力を終了

		int x = 0; // 合計金額をX円にする方法の数

		for(int a = 0; a <= A; a++) {
			for(int b = 0; b <= B; b++) {
				for(int c = 0; c <= C; c++) {
					if(500*a + 100*b + 50*c == X) {
						// 合計金額がX円にする方法
						x += 1;
					}
				}
			}
		}

		// xを出力
		System.out.println(x);
	}

} Main
import java.util.Scanner;

// 提出時にclass Main に書き換え
public class Main {
	public static void main(String[] args)  {
		// 標準入力を受け取る
		Scanner sc = new Scanner(System.in);
		int A = sc.nextInt(); // int Aを受け取る
		int B = sc.nextInt(); // int Bを受け取る
		int C = sc.nextInt(); // int Cを受け取る
		int X = sc.nextInt(); // int Xを受け取る
		sc.close(); // 標準入力を終了

		int x = 0; // 合計金額をX円にする方法の数

		for(int a = 0; a <= A; a++) {
			for(int b = 0; b <= B; b++) {
				for(int c = 0; c <= C; c++) {
					if(500*a + 100*b + 50*c == X) {
						// 合計金額がX円にする方法
						x += 1;
					}
				}
			}
		}

		// xを出力
		System.out.println(x);
	}

}