Problem:
Score : 400 points

Problem Statement

You are given an integer N. Among the divisors of N! (= 1 \times 2 \times ... \times N), how many Shichi-Go numbers (literally "Seven-Five numbers") are there?

Here, a Shichi-Go number is a positive integer that has exactly 75 divisors.

Note

When a positive integer A divides a positive integer B, A is said to a divisor of B.
For example, 6 has four divisors: 1, 2, 3 and 6.

Constraints

1 \leq N \leq 100

N is an integer.

Input

Input is given from Standard Input in the following format:

N

Output

Print the number of the Shichi-Go numbers that are divisors of N!.

Sample Input 1

9

Sample Output 1

0

There are no Shichi-Go numbers among the divisors of 9! = 1 \times 2 \times ... \times 9 = 362880.

Sample Input 2

10

Sample Output 2

1

There is one Shichi-Go number among the divisors of 10! = 3628800: 32400.

Sample Input 3

100

Sample Output 3

543

Solution in PyPy3 (2.4.0) (judge verdict: Accepted)

#      
import collections, atexit, math, sys, bisect 

sys.setrecursionlimit(1000000)
def getIntList():
    return list(map(int, input().split()))    

try :
    #raise ModuleNotFoundError
    import numpy
    def dprint(*args, **kwargs):
        #print(*args, **kwargs, file=sys.stderr)
        # in python 3.4 **kwargs is invalid???
        print(*args,  file=sys.stderr)
    dprint('debug mode')
except Exception:
    def dprint(*args, **kwargs):
        pass



inId = 0
outId = 0
if inId>0:
    dprint('use input', inId)
    sys.stdin = open('input'+ str(inId) + '.txt', 'r') #标准输出重定向至文件
if outId>0:
    dprint('use output', outId)
    sys.stdout = open('stdout'+ str(outId) + '.txt', 'w') #标准输出重定向至文件
    atexit.register(lambda :sys.stdout.close())     #idle 中不会执行 atexit
    
N, = getIntList()
#print(N)

zd = {}

for i in range(2, N+1):
    for j in range(2,N+1):
        while i%j==0:
            if j not in zd:
                zd[j] = 0
            zd[j]+=1
            i = i//j
z1 = []
for x in zd:
    if zd[x]>=2:
        z1.append(zd[x])
dprint(z1)
re = 0
def search(ki, zt, ti):
    if ti>=len(zt):
        global re
        re+=1
        return
    global z1
    if ki >= len(z1):
        return
    search(ki+1, zt,ti)
    if z1[ki] +1 >= zt[ti]:
        search(ki+1, zt,ti+1)

search(0, [75,], 0)
search(0, [3,25], 0)
search(0, [25,3], 0)
search(0, [15,5], 0)
search(0, [5,15], 0)
search(0, [3,5, 5], 0)
search(0, [5,3, 5], 0)
search(0, [5,5, 3], 0)


print(re)