from copy import deepcopy





def mk_array(init_val, *args):

    args = args[::-1]

    res = [init_val for _ in range(args[0])]

    for arg in args[1:]:

        res = [deepcopy(res) for _ in range(arg)]

    return res





N = int(eval(input()))

e = [0 for _ in range(N + 1)]



for i in range(2, N + 1):

    for j in range(2, i + 1):

        while i % j == 0:

            e[j] += 1

            i //= j



counts = list([x for x in e if x > 0])

prim_count = len(counts)

counts = [0] + counts  # 1-indexed 化

dp = mk_array(0, prim_count + 1, 75 + 1)

dp[0][1] = 1



for i in range(1, prim_count + 1):

    for j in range(1, 75 + 1):

        for k in range(min(counts[i], 75 // j - 1) + 1):

            dp[i][j * (k + 1)] += dp[i - 1][j]



print((dp[prim_count][75]))

N = int(eval(input()))

e = [0 for _ in range(N + 1)]



for i in range(2, N + 1):

    for j in range(2, i + 1):

        while i % j == 0:

            e[j] += 1

            i //= j





def num(m):

    return len(tuple([x for x in e if x >= m - 1]))





ans = 0

ans += num(75)

ans += num(25) * (num(3) - 1)

ans += num(15) * (num(5) - 1)

ans += num(5) * (num(5) - 1) * (num(3) - 2) // 2



print(ans)

from copy import deepcopy


def mk_array(init_val, *args):
    args = args[::-1]
    res = [init_val for _ in range(args[0])]
    for arg in args[1:]:
        res = [deepcopy(res) for _ in range(arg)]
    return res


N = int(eval(input()))
e = [0 for _ in range(N + 1)]
for i in range(2, N + 1):
    for j in range(2, i + 1):
        while i % j == 0:
            e[j] += 1
            i //= j
counts = list([x for x in e if x > 0])
prim_count = len(counts)
counts = [0] + counts  # 1-indexed 化
dp = mk_array(0, prim_count + 1, 75 + 1)
dp[0][1] = 1
for i in range(1, prim_count + 1):
    for j in range(1, 75 + 1):
        for k in range(min(counts[i], 75 // j - 1) + 1):
            dp[i][j * (k + 1)] += dp[i - 1][j]
print((dp[prim_count][75]))

N = int(eval(input()))
e = [0 for _ in range(N + 1)]
for i in range(2, N + 1):
    for j in range(2, i + 1):
        while i % j == 0:
            e[j] += 1
            i //= j


def num(m):
    return len(tuple([x for x in e if x >= m - 1]))


ans = 0
ans += num(75)
ans += num(25) * (num(3) - 1)
ans += num(15) * (num(5) - 1)
ans += num(5) * (num(5) - 1) * (num(3) - 2) // 2
print(ans)

-from copy import deepcopy - - -def mk_array(init_val, *args): -    args = args[::-1] -    res = [init_val for _ in range(args[0])] -    for arg in args[1:]: -        res = [deepcopy(res) for _ in range(arg)] -    return res - - -counts = list([x for x in e if x > 0]) -prim_count = len(counts) -counts = [0] + counts  # 1-indexed 化 -dp = mk_array(0, prim_count + 1, 75 + 1) -dp[0][1] = 1 -for i in range(1, prim_count + 1): -    for j in range(1, 75 + 1): -        for k in range(min(counts[i], 75 // j - 1) + 1): -            dp[i][j * (k + 1)] += dp[i - 1][j] -print((dp[prim_count][75])) + + +def num(m): +    return len(tuple([x for x in e if x >= m - 1])) + + +ans = 0 +ans += num(75) +ans += num(25) * (num(3) - 1) +ans += num(15) * (num(5) - 1) +ans += num(5) * (num(5) - 1) * (num(3) - 2) // 2 +print(ans)