//https://vjudge.net/contest/286896

#include <iostream>
#include <cstdio>
#include <set>
#include <list>
#include <vector>
#include <stack>
#include <queue>
#include <map>
#include <string>
#include <sstream>
#include <algorithm>
#include <cstring>
#include <cstdlib>
#include <cctype>
#include <cmath>

long long mod=1000000007;
int prime[1005];//1000以内的素数
int cnt=0;//素数个数
bool vi[1005];
int main(){
    int n;
    std::cin>>n;
    long long ans=1;
    for(int i=2;i<=n;i++){
        if(!vi[i]){
            prime[cnt++]=i;
        }
        for(int j=0;j<cnt;j++){
            if(i*prime[j]>n) break;
            vi[i*prime[j]]=1;
            if(i%prime[j]==0) break;
        }
    }//线性素数筛
    long long num[1005]={0};
    for(int i=2;i<=n;i++){
        int nu=i;
        for(int j=0;j<cnt;j++){
            if(nu==1)
                break;
            else
            {
                while(nu%prime[j]==0){
                    nu/=prime[j];
                    num[prime[j]]++;
                }
            }
        }
    }
    for(int i=0;i<cnt;i++){
        ans*=num[prime[i]]+1;
        ans%=mod;
    }
    std::cout<<ans<<std::endl;
    return 0;
}