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++14 (GCC 5.4.1) (judge verdict: Accepted)

#include <bits/stdc++.h>
using namespace std;
#pragma GCC optimize("Ofast")
#define rep(i,n) for(int i=0; i<n; i++)
typedef long long ll;
typedef pair<int,int> P;
const ll MOD = (int)1e9+7;
const ll INF = MOD*MOD;
const ll powll = 1LL<<1;

int main(){
  /*
  int tt; cin >> tt;
  vector<string> ans = {};
  while(tt--){
    
  }
  rep(i,ans.size()) cout << ans[i] << "\n";
  */
  int n; cin >> n;
  int f[1001] = {};
  for(int i = 2; i <= n; i++){
    int p = i;
    for(int j = 2; j*j <= i; j++){
      while(p % j == 0 && p > 1){
        f[j]++;
        p /= j;
      }
    }
    if(p!=1) f[p]++;
  }

  ll ans = 1;
  rep(i,n+1){
    ans = (ans*(f[i]+1))%MOD;
  }
  cout << ans << "\n";
}