

fun main(args:Array<String>) {
    Proc(readLine()!!.toInt()).proc()
}

class Proc(val keta:Int) {
    val cnt = createCountDic(keta)
    val primeList = cnt.keys.sorted()
    fun proc() {
        val ans = getAns(0, 75)
        println(ans)
    }
    fun getAns(idx:Int, flag:Int):Int {
        if(flag <= 1) {
            return 1
        }
        if(idx > primeList.lastIndex) {
            return 0
        }
        val element = listOf(1,3,5,15,25,75)
        val key = primeList[idx]
        var ans = 0
        for(i in element) {
            if(cnt[key]!! < i - 1) {
                break
            }
            if(flag % i != 0) {
                continue
            }
            ans += getAns(idx+1, flag / i)
        }
        return ans
    }
    companion object {
        fun createCountDic(num:Int):MutableMap<Int, Int> {
            val count = mutableMapOf<Int, Int>()
            for(i in (2..num)) {
                val ret = primeDevide(i)
                ret.forEach{
                    if(count.containsKey(it.key)) {
                        count[it.key] = count[it.key]!! + it.value
                    } else {
                        count[it.key] = it.value
                    }
                }
            }
            return count
        }
        fun primeDevide(num:Int):MutableMap<Int,Int> {
            var current = num
            val cnt = mutableMapOf<Int,Int>()
            for(i in (2..num)) {
                if(current % i != 0) {
                    continue
                }
                cnt[i] = 0
                while (current % i == 0) {
                    cnt[i] = cnt[i]!! + 1
                    current /= i
                }
                if(current <= 1) {
                    break
                }
            }
            return cnt
        }
    }
}