fun main(arr:Array<String>) {
    val n = readLine()!!.toInt()
    if(n == 1) {
        println(n)
        return
    }
    val cnt = mutableMapOf<Int,Int>()
    for(i in (2..n)) {
        val ret = primeDivide(i)
        for(j in ret) {
            if(cnt.containsKey(j.key)) {
                cnt[j.key] = cnt[j.key]!! + j.value
            } else {
                cnt[j.key] = j.value
            }
        }
    }
    var ans = 1L
    for(i in cnt.values) {
        ans *= i+1
        ans %= (1000000000 + 7)
    }
    println(ans)
}

val dic = mutableMapOf<Int,MutableMap<Int,Int>>()
fun primeDivide(n:Int):Map<Int,Int>{
    dic[n]?.let { return it }

    for(i in (2 until n)) {
        if(n%i != 0) {
            continue
        }
        val tm = dic[n/i]
        tm?.let {
            val ret = mutableMapOf<Int,Int>()
            for(j in it) {
                ret[j.key] = j.value
            }
            if(ret.containsKey(i)) {
                ret[i] = ret[i]!!+1
            } else {
                ret[i] = 1
            }
            dic[n] = ret
            return ret
        }
    }
    val tmp = mutableMapOf(n to 1)
    dic[n] = tmp
    return tmp
}
