import sys

## io

IS = lambda: sys.stdin.readline().rstrip()

II = lambda: int(IS())

MII = lambda: list(map(int, IS().split()))

MIIZ = lambda: list([x-1 for x in MII()])

## dp

INIT_VAL = 0

DP2 = lambda d1, d2: [[INIT_VAL]*d2 for _ in range(d1)]

DP3 = lambda d1, d2, d3: [[[INIT_VAL]*d3 for _ in range(d2)] for _ in range(d1)]

## math

DIVC = lambda x, y: -(-x//y)

DIVF = lambda x, y: x//y



def main():

    a,b,c,x = [II() for _ in range(4)]

    cnt = 0

    for i in range(a+1):

        for j in range(b+1):

            for k in range(c+1):

                if i*500+j*100+k*50 == x: cnt += 1

    print(cnt)





if __name__ == '__main__':

    main()

import sys

## io

IS = lambda: sys.stdin.readline().rstrip()

II = lambda: int(IS())

MII = lambda: list(map(int, IS().split()))

MIIZ = lambda: list([x-1 for x in MII()])

## dp

INIT_VAL = 0

DP2 = lambda d1, d2: [[INIT_VAL]*d2 for _ in range(d1)]

DP3 = lambda d1, d2, d3: [[[INIT_VAL]*d3 for _ in range(d2)] for _ in range(d1)]

## math

DIVC = lambda x, y: -(-x//y)

DIVF = lambda x, y: x//y



def main():

    a,b,c,x = [II() for _ in range(4)]

    cnt = 0

    for i in range(a+1):

        for j in range(b+1):

            k = (x-(i*500+j*100))//50

            if 0 <= k <= c: cnt += 1

    print(cnt)





if __name__ == '__main__':

    main()

import sys

## io
IS = lambda: sys.stdin.readline().rstrip()
II = lambda: int(IS())
MII = lambda: list(map(int, IS().split()))
MIIZ = lambda: list([x - 1 for x in MII()])
## dp
INIT_VAL = 0
DP2 = lambda d1, d2: [[INIT_VAL] * d2 for _ in range(d1)]
DP3 = lambda d1, d2, d3: [[[INIT_VAL] * d3 for _ in range(d2)] for _ in range(d1)]
## math
DIVC = lambda x, y: -(-x // y)
DIVF = lambda x, y: x // y


def main():
    a, b, c, x = [II() for _ in range(4)]
    cnt = 0
    for i in range(a + 1):
        for j in range(b + 1):
            for k in range(c + 1):
                if i * 500 + j * 100 + k * 50 == x:
                    cnt += 1
    print(cnt)


if __name__ == "__main__":
    main()

import sys

## io
IS = lambda: sys.stdin.readline().rstrip()
II = lambda: int(IS())
MII = lambda: list(map(int, IS().split()))
MIIZ = lambda: list([x - 1 for x in MII()])
## dp
INIT_VAL = 0
DP2 = lambda d1, d2: [[INIT_VAL] * d2 for _ in range(d1)]
DP3 = lambda d1, d2, d3: [[[INIT_VAL] * d3 for _ in range(d2)] for _ in range(d1)]
## math
DIVC = lambda x, y: -(-x // y)
DIVF = lambda x, y: x // y


def main():
    a, b, c, x = [II() for _ in range(4)]
    cnt = 0
    for i in range(a + 1):
        for j in range(b + 1):
            k = (x - (i * 500 + j * 100)) // 50
            if 0 <= k <= c:
                cnt += 1
    print(cnt)


if __name__ == "__main__":
    main()

-            for k in range(c + 1): -                if i * 500 + j * 100 + k * 50 == x: -                    cnt += 1 +            k = (x - (i * 500 + j * 100)) // 50 +            if 0 <= k <= c: +                cnt += 1