val primeToIndex =
    mapOf(2 to 0, 3 to 1, 5 to 2, 7 to 3, 11 to 4, 13 to 5,
          17 to 6, 19 to 7, 23 to 8, 29 to 9, 31 to 10, 37 to 11,
          41 to 12, 43 to 13, 47 to 14)

val nonUsePrimes =
    listOf(53, 59, 61, 67, 71, 73, 79, 83, 89, 97)

val primeArr = primeToIndex.keys.toIntArray()

fun main(args: Array<String>) {
    val n = readInputLine().toInt()

    val primes = Array(n + 1, {IntArray(15)})
    
    for (i in 2..n) {
        if (primeToIndex.containsKey(i)) {
            primes[i][primeToIndex.get(i)!!] = 1
            continue
        }
        
        if (nonUsePrimes.contains(i)) {
            continue
        }
        
        for (p in primeToIndex.keys) {
            if (i % p == 0) {
                for (j in 0..14) {
                    primes[i][j] = primes[i / p][j]
                }
                primes[i][primeToIndex.get(p)!!]++
                break
            }
        }
    }
    
    val totalPrimes = IntArray(15)
    for (p in primes) {
        for (i in 0..14) {
            totalPrimes[i] += p[i]
        }
    }

    // 指数とインデックスの関係:
    // 2 -> 0
    // 4 -> 1
    // 14 -> 2
    // 24 -> 3
    // 74 -> 4
    val cnt = IntArray(5)
    for (p in totalPrimes) {
        if (p >= 2) {
            cnt[0]++
        }
        if (p >= 4) {
            cnt[1]++
        }
        if (p >= 14) {
            cnt[2]++
        }
        if (p >= 24) {
            cnt[3]++
        }
        if (p >= 74) {
            cnt[4]++
        }
    }

    var ans = 0
    
    // 同じものは使えないため、複数組み合わせの場合は使える素数の数から減算する処理をする
    // p^4q^4r^2のケースはpとqのパターン数分2で除算する必要がある
    ans += cnt[4]
    ans += cnt[3] * (cnt[0] - 1)
    ans += cnt[2] * (cnt[1] - 1)
    ans += cnt[1] * (cnt[1] - 1) * (cnt[0] - 2) / 2
    
    println(ans)
}
 
fun readInputLine(): String {
    return readLine()!!
}

