#include using namespace std; #define int long long struct Eratosthenes{ vector isprime; vector minfactor; Eratosthenes(int N) : isprime(N+1,true),minfactor(N+1,-1) { isprime[1]=false; minfactor[1]=1; for(int p=2;p<=N;p++) { if(!isprime[p]) continue; minfactor[p]=p; for (int q=p*2;q<=N;q+=p){ isprime[q]=false; if(minfactor[q]==-1) minfactor[q]=p; } } } vector> factorize(int n){ vector> res; while(n>1){ int p=minfactor[n]; int exp=0; while(minfactor[n]==p) { n/=p; exp++; } res.emplace_back(p,exp); } return res; } }; signed main(){ int N; cin >> N; int ans=0; Eratosthenes er(N+1); for(int i=1;i<=N;i++){ vector> vec=er.factorize(i); int res=1; for(auto i : vec){ res*=i.second+1; } ans+=res*(N-i+1); } cout << ans << endl; }