import subprocess
import gzip, base64, os
import stat

gz = b'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'
bin = gzip.decompress(base64.b64decode(gz))
p = os.path.dirname(__file__)
pymain = os.path.join(p, "a.out")
with open(pymain, "wb") as f:
    f.write(bin)
os.chmod(pymain, stat.S_IRUSR | stat.S_IWUSR | stat.S_IXUSR)
if p == "":
    pymain = "./" + pymain
subprocess.call(pymain)


# compiled by pythran
'''
#pythran export main2()
def main2():
    stdin = open('/dev/stdin')
    A = int(stdin.readline())
    B = int(stdin.readline())
    C = int(stdin.readline())
    X = int(stdin.readline())
    count = 0
    for i in range(A + 1):
        for j in range(B + 1):
            for k in range(C + 1):
                if 500 * i + 100 * j + 50 * k == X:
                    count += 1
    print(count)

'''


Measured memory_bytes: 4820