#include<bits/stdc++.h>
#define mdw 1000000007
#define mdd 998244353
#define m18 1e18+1
#define ll long long 
#define forr(i,a,n) for(int i=a;i<n;i++)
#define forrll(i,a,n) for(long long i=a;i<n;i++)
#define forrlle(i,a,n) for(long long i=a;i<=n;i++)
#define forrllr(i,n,a) for(long long i=n-1;i>=a;i--)
// #define pb push_back
// #define vi vector<int>
// #define mi unordered_map<int,int>
// #define vll vector<long long>
// #define vs vector<string>
// #define mll unordered_map<long long,long long>
// #define mp make_pair
// #define gcd __gcd
// #define umap unordered_map
// // #define maxe *max_element
// // #define mine *min_element
// #define lb lower_bound
// #define ub upper_bound
#define endll "\n"
// // #define N 500000
 using namespace std;

// ll bpo(ll a,ll b) {
//     if (b == 0)
//         return 1;
//     ll res = bpo(a, b / 2);
//     if (b % 2)
//         return res * res * a;
//     else
//         return res * res;
// }

// ll po(ll x,ll y,ll m){
//     if(y==0){
//         return 1;
//     }
//     ll temp=po(x,y/2,m);
//     if(y%2==0){
//         return ((temp%m)*(temp%m))%m;
//     }else{
//         return (((x%m)*(temp%m))%m*(temp)%m)%m;
//     }
    
// }

// ll modinverse(ll a,ll m){
//     return po(a,m-2,m);
// }

// ll myncr(int n, int r, int p) 
// { 
//    if (r==0) 
//       return 1;  
//     ll fac[n+1]; 
//     fac[0] = 1; 
//     for (ll i=1 ; i<=n; i++) 
//         fac[i] = fac[i-1]*i%p; 
  
//     return (fac[n]* modinverse(fac[r], p) % p * 
//             modinverse(fac[n-r], p) % p) % p; 
// }

// ll lcm(ll a, ll b){ 
//     return (a*b)/(gcd(a, b));
// }
// ll max(ll a, ll b){
//   if (a > b)
//     return a;
//   return b;
// }
// ll min(ll a, ll b){
//   if (a < b)
//     return a;
//   return b;
// }

// bool comp(pair<ll,ll> a,pair<ll,ll> b){
//     return a.second>b.second;
// }

// bool comp2(ll a,ll b){
//     return a>b;
// }


// vector<int> parent(N), siz(N);
// int find_set(int v) {
//     if (v == parent[v])
//         return v;
//     return parent[v] = find_set(parent[v]);
// }

// void make_set(int v) {
//     parent[v] = v;
//     siz[v] = 1;
// }

// void union_sets(int a, int b) {
//     a = find_set(a);
//     b = find_set(b);
//     if (a != b) {
//         if (siz[a] < siz[b])
//             swap(a, b);
//         parent[b] = a;
//         siz[a] += siz[b];
//     }
// }

// ll bin(string s){
//     reverse(s.begin(),s.end());
//     ll n=0,k=1;
//     forrll(i,0,s.size()){
//         n+=(k*(s[i]-48));
//         k*=2;
//     }
//     return n;
// }

// bool isv(ll a,ll b,ll n){
//     return a>=0&&a<n&&b>=0&&b<n;
// }


// bool compp(pair<ll,ll>a,pair<ll,ll>b){
//     if(a.first!=b.first)return a.first<b.first;
//     else return a.second>b.second;
// }

// bool compi(ll a,ll b){
//     return a>b;
// }

// bool isperfect(ll n){
//     if(n<0) return false;
//     ll a=(int)sqrt(n);
//     return a*a==n;
// }

// #define PI 3.14159265358979323846

// bool isPrime(int x) {
//     for (int d = 2; d * d <= x; d++) {
//         if (x % d == 0)
//             return false;
//     }
//     return true;
// }

// bool compg(ll a,ll b){
//     return a>b;
// }


const int N = 10000000;
        int lp[N+1];
        vector<int> pr;

    
int main()
{
   
    // ios::sync_with_stdio(false);
    // cin.tie(NULL);
    // cout.tie(NULL);
    
    ll t,q;
    // cin>>t;
      t=1;
    
    while(t--){

      ll n;
      cin>>n;
      for (int i=2; i<=N; ++i) {
    if (lp[i] == 0) {
        lp[i] = i;
        pr.push_back (i);
    }
    for (int j=0; j<(int)pr.size() && pr[j]<=lp[i] && i*pr[j]<=N; ++j)
        lp[i * pr[j]] = pr[j];
    }

    ll sum=1;
    
    forrll(i,2,n+1){
    ll k=i;
    unordered_map<ll,ll> m;
    while(k!=1){
        m[lp[k]]++;
        k/=lp[k];
    }
    ll cc=1;
    for(auto j:m)cc*=(j.second+1);
    sum+=i*cc;
    }
        cout<<sum<<endll;
   }
}


Measured memory_bytes: 46532