import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

class Main{
	public static void main(String[]arg) throws IOException {
		BufferedReader bfr=new BufferedReader(new InputStreamReader(System.in));
		int c500=0;
		int c100=0;
		int c050=0;
		int ndn=0;
		int tori=0;
		String str="";

		str=bfr.readLine();
		c500=Integer.parseInt(str);
		str=bfr.readLine();
		c100=Integer.parseInt(str);
		str=bfr.readLine();
		c050=Integer.parseInt(str);
		str=bfr.readLine();
		ndn=Integer.parseInt(str);
		for(int i=0; i<=c500; i++) {
			for(int j=0; j<=c100; j++) {
				for(int k=0; k<=c050; k++) {
					if(ndn==i*500+j*100+k*50) {
						tori++;
					}
				}
			}
		}

		System.out.println(tori);
	}
} import java.io.BufferedReader; BufferedReader java.io import java.io.IOException; IOException java.io import java.io.InputStreamReader; InputStreamReader java.io class Main{
	public static void main(String[]arg) throws IOException {
		BufferedReader bfr=new BufferedReader(new InputStreamReader(System.in));
		int c500=0;
		int c100=0;
		int c050=0;
		int ndn=0;
		int tori=0;
		String str="";

		str=bfr.readLine();
		c500=Integer.parseInt(str);
		str=bfr.readLine();
		c100=Integer.parseInt(str);
		str=bfr.readLine();
		c050=Integer.parseInt(str);
		str=bfr.readLine();
		ndn=Integer.parseInt(str);
		for(int i=0; i<=c500; i++) {
			for(int j=0; j<=c100; j++) {
				for(int k=0; k<=c050; k++) {
					if(ndn==i*500+j*100+k*50) {
						tori++;
					}
				}
			}
		}

		System.out.println(tori);
	}
} Main public static void main(String[]arg) throws IOException {
		BufferedReader bfr=new BufferedReader(new InputStreamReader(System.in));
		int c500=0;
		int c100=0;
		int c050=0;
		int ndn=0;
		int tori=0;
		String str="";

		str=bfr.readLine();
		c500=Integer.parseInt(str);
		str=bfr.readLine();
		c100=Integer.parseInt(str);
		str=bfr.readLine();
		c050=Integer.parseInt(str);
		str=bfr.readLine();
		ndn=Integer.parseInt(str);
		for(int i=0; i<=c500; i++) {
			for(int j=0; j<=c100; j++) {
				for(int k=0; k<=c050; k++) {
					if(ndn==i*500+j*100+k*50) {
						tori++;
					}
				}
			}
		}

		System.out.println(tori);
	} main {
		BufferedReader bfr=new BufferedReader(new InputStreamReader(System.in));
		int c500=0;
		int c100=0;
		int c050=0;
		int ndn=0;
		int tori=0;
		String str="";

		str=bfr.readLine();
		c500=Integer.parseInt(str);
		str=bfr.readLine();
		c100=Integer.parseInt(str);
		str=bfr.readLine();
		c050=Integer.parseInt(str);
		str=bfr.readLine();
		ndn=Integer.parseInt(str);
		for(int i=0; i<=c500; i++) {
			for(int j=0; j<=c100; j++) {
				for(int k=0; k<=c050; k++) {
					if(ndn==i*500+j*100+k*50) {
						tori++;
					}
				}
			}
		}

		System.out.println(tori);
	} BufferedReader bfr=new BufferedReader(new InputStreamReader(System.in)); bfr new BufferedReader(new InputStreamReader(System.in)) int c500=0; c500 0 int c100=0; c100 0 int c050=0; c050 0 int ndn=0; ndn 0 int tori=0; tori 0 String str=""; str "" str=bfr.readLine() str bfr.readLine() bfr.readLine bfr c500=Integer.parseInt(str) c500 Integer.parseInt(str) Integer.parseInt Integer str str=bfr.readLine() str bfr.readLine() bfr.readLine bfr c100=Integer.parseInt(str) c100 Integer.parseInt(str) Integer.parseInt Integer str str=bfr.readLine() str bfr.readLine() bfr.readLine bfr c050=Integer.parseInt(str) c050 Integer.parseInt(str) Integer.parseInt Integer str str=bfr.readLine() str bfr.readLine() bfr.readLine bfr ndn=Integer.parseInt(str) ndn Integer.parseInt(str) Integer.parseInt Integer str for(int i=0; i<=c500; i++) {
			for(int j=0; j<=c100; j++) {
				for(int k=0; k<=c050; k++) {
					if(ndn==i*500+j*100+k*50) {
						tori++;
					}
				}
			}
		} int i=0; int i=0; i 0 i<=c500 i c500 i++ i++ i {
			for(int j=0; j<=c100; j++) {
				for(int k=0; k<=c050; k++) {
					if(ndn==i*500+j*100+k*50) {
						tori++;
					}
				}
			}
		} {
			for(int j=0; j<=c100; j++) {
				for(int k=0; k<=c050; k++) {
					if(ndn==i*500+j*100+k*50) {
						tori++;
					}
				}
			}
		} for(int j=0; j<=c100; j++) {
				for(int k=0; k<=c050; k++) {
					if(ndn==i*500+j*100+k*50) {
						tori++;
					}
				}
			} int j=0; int j=0; j 0 j<=c100 j c100 j++ j++ j {
				for(int k=0; k<=c050; k++) {
					if(ndn==i*500+j*100+k*50) {
						tori++;
					}
				}
			} {
				for(int k=0; k<=c050; k++) {
					if(ndn==i*500+j*100+k*50) {
						tori++;
					}
				}
			} for(int k=0; k<=c050; k++) {
					if(ndn==i*500+j*100+k*50) {
						tori++;
					}
				} int k=0; int k=0; k 0 k<=c050 k c050 k++ k++ k {
					if(ndn==i*500+j*100+k*50) {
						tori++;
					}
				} {
					if(ndn==i*500+j*100+k*50) {
						tori++;
					}
				} if(ndn==i*500+j*100+k*50) {
						tori++;
					} ndn==i*500+j*100+k*50 ndn i*500+j*100+k*50 i*500+j*100+k*50 i*500 i 500 j*100 j 100 k*50 k 50 {
						tori++;
					} tori++ tori System.out.println(tori) System.out.println System.out System System.out tori String[]arg arg
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

class Main{
	public static void main(String[]arg) throws IOException {
		BufferedReader bfr=new BufferedReader(new InputStreamReader(System.in));
		int c500=0;
		int c100=0;
		int c050=0;
		int ndn=0;
		int tori=0;
		String str="";

		str=bfr.readLine();
		c500=Integer.parseInt(str);
		str=bfr.readLine();
		c100=Integer.parseInt(str);
		str=bfr.readLine();
		c050=Integer.parseInt(str);
		str=bfr.readLine();
		ndn=Integer.parseInt(str);
		for(int i=0; i<=c500; i++) {
			for(int j=0; j<=c100; j++) {
				for(int k=0; k<=c050; k++) {
					if(ndn==i*500+j*100+k*50) {
						tori++;
					}
				}
			}
		}

		System.out.println(tori);
	}
}