Problem:
Score : 300 points

Problem Statement

You are given an integer N.
Find the number of the positive divisors of N!, modulo 10^9+7.

Constraints

1≤N≤10^3

Input

The input is given from Standard Input in the following format:

N

Output

Print the number of the positive divisors of N!, modulo 10^9+7.

Sample Input 1

3

Sample Output 1

4

There are four divisors of 3! =6: 1, 2, 3 and 6. Thus, the output should be 4.

Sample Input 2

6

Sample Output 2

30

Sample Input 3

1000

Sample Output 3

972926972

Solution in Kotlin (1.0.0) (judge verdict: Accepted)

fun main(arg: Array<String>) {
    val N = nextInt()
    var F = BooleanArray(N + 1)
    for (i in 2 .. N)
        for (j in i + i .. N step i) F[j] = true
    var ans = 1L
    fun f(n: Int): Long {
        var ret = 1L
        var j = n
        while (j <= N) {
            ret += N / j
            j *= n
        }
//System.err.println("$n $ret")
        return ret
    }
    for (i in 2 .. N)
        if (!F[i]) ans = ans * f(i) % 1000000007L
    println(ans)
}

fun next() = readLine()!!
fun nextInt(offset: Int = 0) = Integer.parseInt(next()) + offset
fun nextLong() = next().toLong()
fun listOfString() = next().split(" ")
fun listOfInt() = listOfString().map(String::toInt)
fun listOfInt(offset: Int = 0) = listOfString().map { Integer.parseInt(it) + offset }