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

public class Main {

    public static void main(String[] args) throws IOException {
        MyReader reader = new MyReader();
        int a = reader.readInt();
        int b = reader.readInt();
        int c = reader.readInt();
        int x = reader.readInt();
        System.out.println(problem087b(a, b, c, x));
    }

    private static int problem087b(int a, int b, int c, int x) {
        int count = 0;
        for (int ai = a; ai >= 0; ai--) {
            for (int bi = b; bi >=0; bi--) {
                for (int ci = c; ci >= 0; ci--) {
                    int price = ai * 500 + bi * 100 + ci * 50;
                    if (price == x) {
                        count++;
                    }
                }
            }
        }
        return count;
    }

    private static class MyReader {
        private final BufferedReader br;
        private MyReader() {
            br = new BufferedReader(new InputStreamReader(System.in));
        }

        private String readLine() throws IOException {
            return br.readLine();
        }

        private int readInt() throws IOException {
            return Integer.parseInt(readLine().split(" ")[0]);
        }

        private long readLong() throws IOException {
            return Long.parseLong(readLine().split(" ")[0]);
        }

        private String[] readStrings(String regex) throws IOException {
            return readLine().split(regex);
        }

        private int[] readInts(String regex) throws IOException {
            String[] strings = readStrings(regex);
            int[] ints = new int[strings.length];
            for (int i = 0; i < ints.length; i++) {
                ints[i] = Integer.parseInt(strings[i]);
            }
            return ints;
        }

        private long[] readLongs(String regex) throws IOException {
            String[] strings = readStrings(regex);
            long[] longs = new long[strings.length];
            for (int i = 0; i < longs.length; i++) {
                longs[i] = Long.parseLong(strings[i]);
            }
            return longs;
        }
    }
} import java.io.BufferedReader; BufferedReader java.io import java.io.IOException; IOException java.io import java.io.InputStreamReader; InputStreamReader java.io public class Main {

    public static void main(String[] args) throws IOException {
        MyReader reader = new MyReader();
        int a = reader.readInt();
        int b = reader.readInt();
        int c = reader.readInt();
        int x = reader.readInt();
        System.out.println(problem087b(a, b, c, x));
    }

    private static int problem087b(int a, int b, int c, int x) {
        int count = 0;
        for (int ai = a; ai >= 0; ai--) {
            for (int bi = b; bi >=0; bi--) {
                for (int ci = c; ci >= 0; ci--) {
                    int price = ai * 500 + bi * 100 + ci * 50;
                    if (price == x) {
                        count++;
                    }
                }
            }
        }
        return count;
    }

    private static class MyReader {
        private final BufferedReader br;
        private MyReader() {
            br = new BufferedReader(new InputStreamReader(System.in));
        }

        private String readLine() throws IOException {
            return br.readLine();
        }

        private int readInt() throws IOException {
            return Integer.parseInt(readLine().split(" ")[0]);
        }

        private long readLong() throws IOException {
            return Long.parseLong(readLine().split(" ")[0]);
        }

        private String[] readStrings(String regex) throws IOException {
            return readLine().split(regex);
        }

        private int[] readInts(String regex) throws IOException {
            String[] strings = readStrings(regex);
            int[] ints = new int[strings.length];
            for (int i = 0; i < ints.length; i++) {
                ints[i] = Integer.parseInt(strings[i]);
            }
            return ints;
        }

        private long[] readLongs(String regex) throws IOException {
            String[] strings = readStrings(regex);
            long[] longs = new long[strings.length];
            for (int i = 0; i < longs.length; i++) {
                longs[i] = Long.parseLong(strings[i]);
            }
            return longs;
        }
    }
} Main public static void main(String[] args) throws IOException {
        MyReader reader = new MyReader();
        int a = reader.readInt();
        int b = reader.readInt();
        int c = reader.readInt();
        int x = reader.readInt();
        System.out.println(problem087b(a, b, c, x));
    } main {
        MyReader reader = new MyReader();
        int a = reader.readInt();
        int b = reader.readInt();
        int c = reader.readInt();
        int x = reader.readInt();
        System.out.println(problem087b(a, b, c, x));
    } MyReader reader = new MyReader(); reader new MyReader() int a = reader.readInt(); a reader.readInt() reader.readInt reader int b = reader.readInt(); b reader.readInt() reader.readInt reader int c = reader.readInt(); c reader.readInt() reader.readInt reader int x = reader.readInt(); x reader.readInt() reader.readInt reader System.out.println(problem087b(a, b, c, x)) System.out.println System.out System System.out problem087b(a, b, c, x) problem087b a b c x String[] args args private static int problem087b(int a, int b, int c, int x) {
        int count = 0;
        for (int ai = a; ai >= 0; ai--) {
            for (int bi = b; bi >=0; bi--) {
                for (int ci = c; ci >= 0; ci--) {
                    int price = ai * 500 + bi * 100 + ci * 50;
                    if (price == x) {
                        count++;
                    }
                }
            }
        }
        return count;
    } problem087b {
        int count = 0;
        for (int ai = a; ai >= 0; ai--) {
            for (int bi = b; bi >=0; bi--) {
                for (int ci = c; ci >= 0; ci--) {
                    int price = ai * 500 + bi * 100 + ci * 50;
                    if (price == x) {
                        count++;
                    }
                }
            }
        }
        return count;
    } int count = 0; count 0 for (int ai = a; ai >= 0; ai--) {
            for (int bi = b; bi >=0; bi--) {
                for (int ci = c; ci >= 0; ci--) {
                    int price = ai * 500 + bi * 100 + ci * 50;
                    if (price == x) {
                        count++;
                    }
                }
            }
        } int ai = a; int ai = a; ai a ai >= 0 ai 0 ai-- ai-- ai {
            for (int bi = b; bi >=0; bi--) {
                for (int ci = c; ci >= 0; ci--) {
                    int price = ai * 500 + bi * 100 + ci * 50;
                    if (price == x) {
                        count++;
                    }
                }
            }
        } {
            for (int bi = b; bi >=0; bi--) {
                for (int ci = c; ci >= 0; ci--) {
                    int price = ai * 500 + bi * 100 + ci * 50;
                    if (price == x) {
                        count++;
                    }
                }
            }
        } for (int bi = b; bi >=0; bi--) {
                for (int ci = c; ci >= 0; ci--) {
                    int price = ai * 500 + bi * 100 + ci * 50;
                    if (price == x) {
                        count++;
                    }
                }
            } int bi = b; int bi = b; bi b bi >=0 bi 0 bi-- bi-- bi {
                for (int ci = c; ci >= 0; ci--) {
                    int price = ai * 500 + bi * 100 + ci * 50;
                    if (price == x) {
                        count++;
                    }
                }
            } {
                for (int ci = c; ci >= 0; ci--) {
                    int price = ai * 500 + bi * 100 + ci * 50;
                    if (price == x) {
                        count++;
                    }
                }
            } for (int ci = c; ci >= 0; ci--) {
                    int price = ai * 500 + bi * 100 + ci * 50;
                    if (price == x) {
                        count++;
                    }
                } int ci = c; int ci = c; ci c ci >= 0 ci 0 ci-- ci-- ci {
                    int price = ai * 500 + bi * 100 + ci * 50;
                    if (price == x) {
                        count++;
                    }
                } {
                    int price = ai * 500 + bi * 100 + ci * 50;
                    if (price == x) {
                        count++;
                    }
                } int price = ai * 500 + bi * 100 + ci * 50; price ai * 500 + bi * 100 + ci * 50 ai * 500 + bi * 100 + ci * 50 ai * 500 ai 500 bi * 100 bi 100 ci * 50 ci 50 if (price == x) {
                        count++;
                    } price == x price x {
                        count++;
                    } count++ count return count; count int a a int b b int c c int x x private static class MyReader {
        private final BufferedReader br;
        private MyReader() {
            br = new BufferedReader(new InputStreamReader(System.in));
        }

        private String readLine() throws IOException {
            return br.readLine();
        }

        private int readInt() throws IOException {
            return Integer.parseInt(readLine().split(" ")[0]);
        }

        private long readLong() throws IOException {
            return Long.parseLong(readLine().split(" ")[0]);
        }

        private String[] readStrings(String regex) throws IOException {
            return readLine().split(regex);
        }

        private int[] readInts(String regex) throws IOException {
            String[] strings = readStrings(regex);
            int[] ints = new int[strings.length];
            for (int i = 0; i < ints.length; i++) {
                ints[i] = Integer.parseInt(strings[i]);
            }
            return ints;
        }

        private long[] readLongs(String regex) throws IOException {
            String[] strings = readStrings(regex);
            long[] longs = new long[strings.length];
            for (int i = 0; i < longs.length; i++) {
                longs[i] = Long.parseLong(strings[i]);
            }
            return longs;
        }
    } MyReader private final BufferedReader br; br private MyReader() {
            br = new BufferedReader(new InputStreamReader(System.in));
        } MyReader {
            br = new BufferedReader(new InputStreamReader(System.in));
        } br = new BufferedReader(new InputStreamReader(System.in)) br new BufferedReader(new InputStreamReader(System.in)) private String readLine() throws IOException {
            return br.readLine();
        } readLine {
            return br.readLine();
        } return br.readLine(); br.readLine() br.readLine br private int readInt() throws IOException {
            return Integer.parseInt(readLine().split(" ")[0]);
        } readInt {
            return Integer.parseInt(readLine().split(" ")[0]);
        } return Integer.parseInt(readLine().split(" ")[0]); Integer.parseInt(readLine().split(" ")[0]) Integer.parseInt Integer readLine().split(" ")[0] readLine().split(" ") readLine().split readLine() readLine " " 0 private long readLong() throws IOException {
            return Long.parseLong(readLine().split(" ")[0]);
        } readLong {
            return Long.parseLong(readLine().split(" ")[0]);
        } return Long.parseLong(readLine().split(" ")[0]); Long.parseLong(readLine().split(" ")[0]) Long.parseLong Long readLine().split(" ")[0] readLine().split(" ") readLine().split readLine() readLine " " 0 private String[] readStrings(String regex) throws IOException {
            return readLine().split(regex);
        } readStrings {
            return readLine().split(regex);
        } return readLine().split(regex); readLine().split(regex) readLine().split readLine() readLine regex String regex regex private int[] readInts(String regex) throws IOException {
            String[] strings = readStrings(regex);
            int[] ints = new int[strings.length];
            for (int i = 0; i < ints.length; i++) {
                ints[i] = Integer.parseInt(strings[i]);
            }
            return ints;
        } readInts {
            String[] strings = readStrings(regex);
            int[] ints = new int[strings.length];
            for (int i = 0; i < ints.length; i++) {
                ints[i] = Integer.parseInt(strings[i]);
            }
            return ints;
        } String[] strings = readStrings(regex); strings readStrings(regex) readStrings regex int[] ints = new int[strings.length]; ints new int[strings.length] strings.length strings strings.length for (int i = 0; i < ints.length; i++) {
                ints[i] = Integer.parseInt(strings[i]);
            } int i = 0; int i = 0; i 0 i < ints.length i ints.length ints ints.length i++ i++ i {
                ints[i] = Integer.parseInt(strings[i]);
            } {
                ints[i] = Integer.parseInt(strings[i]);
            } ints[i] = Integer.parseInt(strings[i]) ints[i] ints i Integer.parseInt(strings[i]) Integer.parseInt Integer strings[i] strings i return ints; ints String regex regex private long[] readLongs(String regex) throws IOException {
            String[] strings = readStrings(regex);
            long[] longs = new long[strings.length];
            for (int i = 0; i < longs.length; i++) {
                longs[i] = Long.parseLong(strings[i]);
            }
            return longs;
        } readLongs {
            String[] strings = readStrings(regex);
            long[] longs = new long[strings.length];
            for (int i = 0; i < longs.length; i++) {
                longs[i] = Long.parseLong(strings[i]);
            }
            return longs;
        } String[] strings = readStrings(regex); strings readStrings(regex) readStrings regex long[] longs = new long[strings.length]; longs new long[strings.length] strings.length strings strings.length for (int i = 0; i < longs.length; i++) {
                longs[i] = Long.parseLong(strings[i]);
            } int i = 0; int i = 0; i 0 i < longs.length i longs.length longs longs.length i++ i++ i {
                longs[i] = Long.parseLong(strings[i]);
            } {
                longs[i] = Long.parseLong(strings[i]);
            } longs[i] = Long.parseLong(strings[i]) longs[i] longs i Long.parseLong(strings[i]) Long.parseLong Long strings[i] strings i return longs; longs String regex regex public class Main {

    public static void main(String[] args) throws IOException {
        MyReader reader = new MyReader();
        int a = reader.readInt();
        int b = reader.readInt();
        int c = reader.readInt();
        int x = reader.readInt();
        System.out.println(problem087b(a, b, c, x));
    }

    private static int problem087b(int a, int b, int c, int x) {
        int count = 0;
        for (int ai = a; ai >= 0; ai--) {
            for (int bi = b; bi >=0; bi--) {
                for (int ci = c; ci >= 0; ci--) {
                    int price = ai * 500 + bi * 100 + ci * 50;
                    if (price == x) {
                        count++;
                    }
                }
            }
        }
        return count;
    }

    private static class MyReader {
        private final BufferedReader br;
        private MyReader() {
            br = new BufferedReader(new InputStreamReader(System.in));
        }

        private String readLine() throws IOException {
            return br.readLine();
        }

        private int readInt() throws IOException {
            return Integer.parseInt(readLine().split(" ")[0]);
        }

        private long readLong() throws IOException {
            return Long.parseLong(readLine().split(" ")[0]);
        }

        private String[] readStrings(String regex) throws IOException {
            return readLine().split(regex);
        }

        private int[] readInts(String regex) throws IOException {
            String[] strings = readStrings(regex);
            int[] ints = new int[strings.length];
            for (int i = 0; i < ints.length; i++) {
                ints[i] = Integer.parseInt(strings[i]);
            }
            return ints;
        }

        private long[] readLongs(String regex) throws IOException {
            String[] strings = readStrings(regex);
            long[] longs = new long[strings.length];
            for (int i = 0; i < longs.length; i++) {
                longs[i] = Long.parseLong(strings[i]);
            }
            return longs;
        }
    }
} public class Main {

    public static void main(String[] args) throws IOException {
        MyReader reader = new MyReader();
        int a = reader.readInt();
        int b = reader.readInt();
        int c = reader.readInt();
        int x = reader.readInt();
        System.out.println(problem087b(a, b, c, x));
    }

    private static int problem087b(int a, int b, int c, int x) {
        int count = 0;
        for (int ai = a; ai >= 0; ai--) {
            for (int bi = b; bi >=0; bi--) {
                for (int ci = c; ci >= 0; ci--) {
                    int price = ai * 500 + bi * 100 + ci * 50;
                    if (price == x) {
                        count++;
                    }
                }
            }
        }
        return count;
    }

    private static class MyReader {
        private final BufferedReader br;
        private MyReader() {
            br = new BufferedReader(new InputStreamReader(System.in));
        }

        private String readLine() throws IOException {
            return br.readLine();
        }

        private int readInt() throws IOException {
            return Integer.parseInt(readLine().split(" ")[0]);
        }

        private long readLong() throws IOException {
            return Long.parseLong(readLine().split(" ")[0]);
        }

        private String[] readStrings(String regex) throws IOException {
            return readLine().split(regex);
        }

        private int[] readInts(String regex) throws IOException {
            String[] strings = readStrings(regex);
            int[] ints = new int[strings.length];
            for (int i = 0; i < ints.length; i++) {
                ints[i] = Integer.parseInt(strings[i]);
            }
            return ints;
        }

        private long[] readLongs(String regex) throws IOException {
            String[] strings = readStrings(regex);
            long[] longs = new long[strings.length];
            for (int i = 0; i < longs.length; i++) {
                longs[i] = Long.parseLong(strings[i]);
            }
            return longs;
        }
    }
} Main
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {

    public static void main(String[] args) throws IOException {
        MyReader reader = new MyReader();
        int a = reader.readInt();
        int b = reader.readInt();
        int c = reader.readInt();
        int x = reader.readInt();
        System.out.println(problem087b(a, b, c, x));
    }

    private static int problem087b(int a, int b, int c, int x) {
        int count = 0;
        for (int ai = a; ai >= 0; ai--) {
            for (int bi = b; bi >=0; bi--) {
                for (int ci = c; ci >= 0; ci--) {
                    int price = ai * 500 + bi * 100 + ci * 50;
                    if (price == x) {
                        count++;
                    }
                }
            }
        }
        return count;
    }

    private static class MyReader {
        private final BufferedReader br;
        private MyReader() {
            br = new BufferedReader(new InputStreamReader(System.in));
        }

        private String readLine() throws IOException {
            return br.readLine();
        }

        private int readInt() throws IOException {
            return Integer.parseInt(readLine().split(" ")[0]);
        }

        private long readLong() throws IOException {
            return Long.parseLong(readLine().split(" ")[0]);
        }

        private String[] readStrings(String regex) throws IOException {
            return readLine().split(regex);
        }

        private int[] readInts(String regex) throws IOException {
            String[] strings = readStrings(regex);
            int[] ints = new int[strings.length];
            for (int i = 0; i < ints.length; i++) {
                ints[i] = Integer.parseInt(strings[i]);
            }
            return ints;
        }

        private long[] readLongs(String regex) throws IOException {
            String[] strings = readStrings(regex);
            long[] longs = new long[strings.length];
            for (int i = 0; i < longs.length; i++) {
                longs[i] = Long.parseLong(strings[i]);
            }
            return longs;
        }
    }
}