import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int _500 = sc.nextInt();
        int _100 = sc.nextInt();
        int _50 = sc.nextInt();
        int X = sc.nextInt();

        int way=0;
        for (int i = _500; i >= 0; i--) {
            int sub_500 = X - 500 * i;
            if (sub_500 == 0) {
                way++;
                continue;
            } else if (sub_500 < 0) {
                continue;
            }
            for (int j = _100; j >= 0; j--) {
                int sub_100 = sub_500 - 100 * j;
                if (sub_100 == 0) {
                    way++;
                    continue;
                } else if (sub_100<0) {
                    continue;
                }
                for (int k = _50; k >= 0; k--) {
                    int sub_50 = sub_100 - 50 * k;
                    if (sub_50 == 0) {
                        way++;
                        continue;
                    } else if (sub_50<0) {
                        continue;
                    }
                }
            }
        }

        System.out.printf("%d\n", way);
    }
} import java.util.Scanner; Scanner java.util public class Main {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int _500 = sc.nextInt();
        int _100 = sc.nextInt();
        int _50 = sc.nextInt();
        int X = sc.nextInt();

        int way=0;
        for (int i = _500; i >= 0; i--) {
            int sub_500 = X - 500 * i;
            if (sub_500 == 0) {
                way++;
                continue;
            } else if (sub_500 < 0) {
                continue;
            }
            for (int j = _100; j >= 0; j--) {
                int sub_100 = sub_500 - 100 * j;
                if (sub_100 == 0) {
                    way++;
                    continue;
                } else if (sub_100<0) {
                    continue;
                }
                for (int k = _50; k >= 0; k--) {
                    int sub_50 = sub_100 - 50 * k;
                    if (sub_50 == 0) {
                        way++;
                        continue;
                    } else if (sub_50<0) {
                        continue;
                    }
                }
            }
        }

        System.out.printf("%d\n", way);
    }
} Main public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int _500 = sc.nextInt();
        int _100 = sc.nextInt();
        int _50 = sc.nextInt();
        int X = sc.nextInt();

        int way=0;
        for (int i = _500; i >= 0; i--) {
            int sub_500 = X - 500 * i;
            if (sub_500 == 0) {
                way++;
                continue;
            } else if (sub_500 < 0) {
                continue;
            }
            for (int j = _100; j >= 0; j--) {
                int sub_100 = sub_500 - 100 * j;
                if (sub_100 == 0) {
                    way++;
                    continue;
                } else if (sub_100<0) {
                    continue;
                }
                for (int k = _50; k >= 0; k--) {
                    int sub_50 = sub_100 - 50 * k;
                    if (sub_50 == 0) {
                        way++;
                        continue;
                    } else if (sub_50<0) {
                        continue;
                    }
                }
            }
        }

        System.out.printf("%d\n", way);
    } main {
        Scanner sc = new Scanner(System.in);
        int _500 = sc.nextInt();
        int _100 = sc.nextInt();
        int _50 = sc.nextInt();
        int X = sc.nextInt();

        int way=0;
        for (int i = _500; i >= 0; i--) {
            int sub_500 = X - 500 * i;
            if (sub_500 == 0) {
                way++;
                continue;
            } else if (sub_500 < 0) {
                continue;
            }
            for (int j = _100; j >= 0; j--) {
                int sub_100 = sub_500 - 100 * j;
                if (sub_100 == 0) {
                    way++;
                    continue;
                } else if (sub_100<0) {
                    continue;
                }
                for (int k = _50; k >= 0; k--) {
                    int sub_50 = sub_100 - 50 * k;
                    if (sub_50 == 0) {
                        way++;
                        continue;
                    } else if (sub_50<0) {
                        continue;
                    }
                }
            }
        }

        System.out.printf("%d\n", way);
    } Scanner sc = new Scanner(System.in); sc new Scanner(System.in) int _500 = sc.nextInt(); _500 sc.nextInt() sc.nextInt sc int _100 = sc.nextInt(); _100 sc.nextInt() sc.nextInt sc int _50 = sc.nextInt(); _50 sc.nextInt() sc.nextInt sc int X = sc.nextInt(); X sc.nextInt() sc.nextInt sc int way=0; way 0 for (int i = _500; i >= 0; i--) {
            int sub_500 = X - 500 * i;
            if (sub_500 == 0) {
                way++;
                continue;
            } else if (sub_500 < 0) {
                continue;
            }
            for (int j = _100; j >= 0; j--) {
                int sub_100 = sub_500 - 100 * j;
                if (sub_100 == 0) {
                    way++;
                    continue;
                } else if (sub_100<0) {
                    continue;
                }
                for (int k = _50; k >= 0; k--) {
                    int sub_50 = sub_100 - 50 * k;
                    if (sub_50 == 0) {
                        way++;
                        continue;
                    } else if (sub_50<0) {
                        continue;
                    }
                }
            }
        } int i = _500; int i = _500; i _500 i >= 0 i 0 i-- i-- i {
            int sub_500 = X - 500 * i;
            if (sub_500 == 0) {
                way++;
                continue;
            } else if (sub_500 < 0) {
                continue;
            }
            for (int j = _100; j >= 0; j--) {
                int sub_100 = sub_500 - 100 * j;
                if (sub_100 == 0) {
                    way++;
                    continue;
                } else if (sub_100<0) {
                    continue;
                }
                for (int k = _50; k >= 0; k--) {
                    int sub_50 = sub_100 - 50 * k;
                    if (sub_50 == 0) {
                        way++;
                        continue;
                    } else if (sub_50<0) {
                        continue;
                    }
                }
            }
        } {
            int sub_500 = X - 500 * i;
            if (sub_500 == 0) {
                way++;
                continue;
            } else if (sub_500 < 0) {
                continue;
            }
            for (int j = _100; j >= 0; j--) {
                int sub_100 = sub_500 - 100 * j;
                if (sub_100 == 0) {
                    way++;
                    continue;
                } else if (sub_100<0) {
                    continue;
                }
                for (int k = _50; k >= 0; k--) {
                    int sub_50 = sub_100 - 50 * k;
                    if (sub_50 == 0) {
                        way++;
                        continue;
                    } else if (sub_50<0) {
                        continue;
                    }
                }
            }
        } int sub_500 = X - 500 * i; sub_500 X - 500 * i X 500 * i 500 i if (sub_500 == 0) {
                way++;
                continue;
            } else if (sub_500 < 0) {
                continue;
            } sub_500 == 0 sub_500 0 {
                way++;
                continue;
            } way++ way continue; if (sub_500 < 0) {
                continue;
            } sub_500 < 0 sub_500 0 {
                continue;
            } continue; for (int j = _100; j >= 0; j--) {
                int sub_100 = sub_500 - 100 * j;
                if (sub_100 == 0) {
                    way++;
                    continue;
                } else if (sub_100<0) {
                    continue;
                }
                for (int k = _50; k >= 0; k--) {
                    int sub_50 = sub_100 - 50 * k;
                    if (sub_50 == 0) {
                        way++;
                        continue;
                    } else if (sub_50<0) {
                        continue;
                    }
                }
            } int j = _100; int j = _100; j _100 j >= 0 j 0 j-- j-- j {
                int sub_100 = sub_500 - 100 * j;
                if (sub_100 == 0) {
                    way++;
                    continue;
                } else if (sub_100<0) {
                    continue;
                }
                for (int k = _50; k >= 0; k--) {
                    int sub_50 = sub_100 - 50 * k;
                    if (sub_50 == 0) {
                        way++;
                        continue;
                    } else if (sub_50<0) {
                        continue;
                    }
                }
            } {
                int sub_100 = sub_500 - 100 * j;
                if (sub_100 == 0) {
                    way++;
                    continue;
                } else if (sub_100<0) {
                    continue;
                }
                for (int k = _50; k >= 0; k--) {
                    int sub_50 = sub_100 - 50 * k;
                    if (sub_50 == 0) {
                        way++;
                        continue;
                    } else if (sub_50<0) {
                        continue;
                    }
                }
            } int sub_100 = sub_500 - 100 * j; sub_100 sub_500 - 100 * j sub_500 100 * j 100 j if (sub_100 == 0) {
                    way++;
                    continue;
                } else if (sub_100<0) {
                    continue;
                } sub_100 == 0 sub_100 0 {
                    way++;
                    continue;
                } way++ way continue; if (sub_100<0) {
                    continue;
                } sub_100<0 sub_100 0 {
                    continue;
                } continue; for (int k = _50; k >= 0; k--) {
                    int sub_50 = sub_100 - 50 * k;
                    if (sub_50 == 0) {
                        way++;
                        continue;
                    } else if (sub_50<0) {
                        continue;
                    }
                } int k = _50; int k = _50; k _50 k >= 0 k 0 k-- k-- k {
                    int sub_50 = sub_100 - 50 * k;
                    if (sub_50 == 0) {
                        way++;
                        continue;
                    } else if (sub_50<0) {
                        continue;
                    }
                } {
                    int sub_50 = sub_100 - 50 * k;
                    if (sub_50 == 0) {
                        way++;
                        continue;
                    } else if (sub_50<0) {
                        continue;
                    }
                } int sub_50 = sub_100 - 50 * k; sub_50 sub_100 - 50 * k sub_100 50 * k 50 k if (sub_50 == 0) {
                        way++;
                        continue;
                    } else if (sub_50<0) {
                        continue;
                    } sub_50 == 0 sub_50 0 {
                        way++;
                        continue;
                    } way++ way continue; if (sub_50<0) {
                        continue;
                    } sub_50<0 sub_50 0 {
                        continue;
                    } continue; System.out.printf("%d\n", way) System.out.printf System.out System System.out "%d\n" way String[] args args public class Main {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int _500 = sc.nextInt();
        int _100 = sc.nextInt();
        int _50 = sc.nextInt();
        int X = sc.nextInt();

        int way=0;
        for (int i = _500; i >= 0; i--) {
            int sub_500 = X - 500 * i;
            if (sub_500 == 0) {
                way++;
                continue;
            } else if (sub_500 < 0) {
                continue;
            }
            for (int j = _100; j >= 0; j--) {
                int sub_100 = sub_500 - 100 * j;
                if (sub_100 == 0) {
                    way++;
                    continue;
                } else if (sub_100<0) {
                    continue;
                }
                for (int k = _50; k >= 0; k--) {
                    int sub_50 = sub_100 - 50 * k;
                    if (sub_50 == 0) {
                        way++;
                        continue;
                    } else if (sub_50<0) {
                        continue;
                    }
                }
            }
        }

        System.out.printf("%d\n", way);
    }
} public class Main {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int _500 = sc.nextInt();
        int _100 = sc.nextInt();
        int _50 = sc.nextInt();
        int X = sc.nextInt();

        int way=0;
        for (int i = _500; i >= 0; i--) {
            int sub_500 = X - 500 * i;
            if (sub_500 == 0) {
                way++;
                continue;
            } else if (sub_500 < 0) {
                continue;
            }
            for (int j = _100; j >= 0; j--) {
                int sub_100 = sub_500 - 100 * j;
                if (sub_100 == 0) {
                    way++;
                    continue;
                } else if (sub_100<0) {
                    continue;
                }
                for (int k = _50; k >= 0; k--) {
                    int sub_50 = sub_100 - 50 * k;
                    if (sub_50 == 0) {
                        way++;
                        continue;
                    } else if (sub_50<0) {
                        continue;
                    }
                }
            }
        }

        System.out.printf("%d\n", way);
    }
} Main
import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int _500 = sc.nextInt();
        int _100 = sc.nextInt();
        int _50 = sc.nextInt();
        int X = sc.nextInt();

        int way=0;
        for (int i = _500; i >= 0; i--) {
            int sub_500 = X - 500 * i;
            if (sub_500 == 0) {
                way++;
                continue;
            } else if (sub_500 < 0) {
                continue;
            }
            for (int j = _100; j >= 0; j--) {
                int sub_100 = sub_500 - 100 * j;
                if (sub_100 == 0) {
                    way++;
                    continue;
                } else if (sub_100<0) {
                    continue;
                }
                for (int k = _50; k >= 0; k--) {
                    int sub_50 = sub_100 - 50 * k;
                    if (sub_50 == 0) {
                        way++;
                        continue;
                    } else if (sub_50<0) {
                        continue;
                    }
                }
            }
        }

        System.out.printf("%d\n", way);
    }
}