#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define mod 1000000007

vector<ll> num(1010,0); 
vector<bool> prime(1010,true);//iが素数ならtrue(エラトステネスの篩)
void isprime(){
    prime[0]=false;
    prime[1]=false;
    for(ll i=2;i*i<=1010;i++){
        if(!prime[i]){continue;}
        for(ll j=i*i;j<=1010;j+=i){
            prime[j]=false;
        }
    }
    return;
}

int main(){
    ll n;cin>>n;
    isprime();

    if(n==1){cout<<1<<endl;return 0;}

    for(ll i=2;i<=n;i++){//n以下の連続整数の素因数個数を数える
        ll number=i;
        for(ll j=2;j<=i;j++){
            if(prime[j]==true){
                while(number%j==0){
                    num[j]++;
                    number/=j;
                }
            }
        }
    }

    ll ans=1;
    for(ll i=2;i<=n;i++){//約数個数を計算
        ans*=(num[i]+1);
        ans%=mod;
    }

    cout<<ans<<endl;

    return 0;
}
#include<bits/stdc++.h>
#define rep(i,n) for(int i = 0; i < n; i++)
#define pb push_back
using namespace std;
typedef long long ll;

const double pi=3.14159265;
int main(){
  int n;
  cin>>n;
  if(n==0){
    cout<<0<<endl;
    return 0;
  }
  string s;
  int p=n;
  int q;
  while(p!=1){
    q=abs(p%(-2));
    if(p<0) p--;
    p/=(-2);
    s+=q+'0';
  }
  cout<<1;
  rep(i,s.size()){
    cout<<s[s.size()-i-1];
  }
}