28237
 13190
 39914
 81367
 8554
 61106
 67448
 39004
 22308
 16054
 71468
 60501
 100
 300
 59632
 90783
 5611
 1000
 69475
 69753
 10
 5
 582
 8
 36961
 5071
 20
 53213
 92775
 28738
 100000
 92280
 37944
 9
 2627
 7
 3

1028306548 224346172 2054738392 8539207488 94344524 4816051228 5867563092 1962150044 641839188 332342852 6587875268 4721174212 12600 115440 4586497300 10630118936 40580456 1286328 6225539588 6275533596 92 8 434692 52 1762017168 33141852 440 3652070664 11101694484 1065137992 12898363344 10983871880 1856988304 64 8885348 28 0
#include<bits/stdc++.h>
#include<ext/pb_ds/assoc_container.hpp>
#include<ext/pb_ds/tree_policy.hpp>
#define MAX ((ll)(1e18))
#define pi (2*acos(0))
#define mp make_pair
#define M ((int)(998244353))
#define xx first
#define yy second
#define NN ((int)(5e5+2))
#define N ((int)(1e5 + 5))
#define pq priority_queue
///#define Q queue
#define eps 0
#define log 20
#define pb push_back
#define MOD 998244353


using namespace std;
using namespace __gnu_pbds;

typedef long long int ll;
typedef unsigned long long int lu;

typedef tree < int,  null_type,  less < int >,  rb_tree_tag,  tree_order_statistics_node_update > o_set;

int lim;
bool vis[N];

///vector < int > diV[N];

ll dfs(int n)
{
    ll ans = 0;

    vis[n] = 1;
    for(int i = 2; i*n<=lim ; i++){
        ans += i*4;
        if(!vis[i*n]) ans += dfs(i*n);
    }

    return ans;
}

int main()
{
    /*for(int i = 2; i<N; i++){
        for(int j = i*2; j<N; j += i) diV[j].pb(i);
    }*/
    scanf("%d",&lim);

    /*for(int i = 2; i<=lim; i++){
        cout<<i<<endl;
        for(int j = 0; j<diV[i].size(); j++) cout<<diV[i][j]<<" ";
        cout<<endl;
    }*/
    ll ans = dfs(2);
    for(int i = 3; i<=lim; i += 2) ans += dfs(i);
    printf("%lld\n",ans);
    return 0;
}
