R, G, B, N = list(map(int, input().split()))

ans = sum(

    (N - r * R - g * G) >= 0 and (N - r * R - g * G) % B == 0

    for r in range(N + 1) for g in range(N - r * R + 1)

)

print(ans)

# 入力

R, G, B, N = list(map(int, input().split()))



# とりうるすべてのr, gの組に関して、条件を満たすbが存在するかを数え上げる

ans = sum(

    N - r * R - g * G >= 0 and (N - r * R - g * G) % B == 0

    for r in range(N // R + 1)

    for g in range((N - r * R) // G + 1)

)



# 出力

print(ans)
R, G, B, N = list(map(int, input().split()))
ans = sum(
    (N - r * R - g * G) >= 0 and (N - r * R - g * G) % B == 0
    for r in range(N + 1)
    for g in range(N - r * R + 1)
)
print(ans)

# 入力
R, G, B, N = list(map(int, input().split()))
# とりうるすべてのr, gの組に関して、条件を満たすbが存在するかを数え上げる
ans = sum(
    N - r * R - g * G >= 0 and (N - r * R - g * G) % B == 0
    for r in range(N // R + 1)
    for g in range((N - r * R) // G + 1)
)
# 出力
print(ans)

+# 入力 +# とりうるすべてのr, gの組に関して、条件を満たすbが存在するかを数え上げる -    (N - r * R - g * G) >= 0 and (N - r * R - g * G) % B == 0 -    for r in range(N + 1) -    for g in range(N - r * R + 1) +    N - r * R - g * G >= 0 and (N - r * R - g * G) % B == 0 +    for r in range(N // R + 1) +    for g in range((N - r * R) // G + 1) +# 出力