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 C# (Mono 4.6.2.0) (judge verdict: Accepted)

using System;
using System.Collections.Generic;

namespace ProgrammingContest
{
    class HashMap<K, V> : Dictionary<K, V>
    {
        public V this[K key]
        {
            get
            {
                V v;
                return TryGetValue(key, out v) ? v : base[key] = default(V);
            }
            set { base[key] = value; }
        }
    }

    class Program
    {
        private int N;

        private long Mod = 1000000007;

        public void Solve()
        {
            N = int.Parse(Console.ReadLine());
            var hm = new HashMap<int, int>();

            for (int i = 2; i <= N; i++)
            {
                int cpi = i;
                for (int j = 2; j * j <= cpi; j++)
                {
                    while (cpi % j == 0)
                    {
                        //Console.WriteLine($"{cpi} {j}");
                        hm[j]++;
                        cpi /= j;
                    }
                }

                //Console.WriteLine($"{cpi} {i}");
                if (cpi > 1)
                {
                    hm[cpi]++;
                }
            }

            long ans = 1;
            foreach (KeyValuePair<int, int> keyValuePair in hm)
            {
                //Console.WriteLine($"{keyValuePair.Value} {keyValuePair.Key}");
                ans *= keyValuePair.Value + 1;
                ans %= Mod;
            }

            Console.WriteLine(ans);
        }

        static void Main(string[] args)
        {
            new Program().Solve();
        }
    }
}