#include <bits/stdc++.h>

#define PI acos(-1)
#define all(a) a.begin(), a.end()
#define F first
#define S second
#define PB push_back
#define PPB pop_back
#define PF push_front
#define PPF pop_front
#define MP make_pair
#define MT make_tuple
#define f0(i, n) for (i = 0; i < (n); ++i)
#define f1(i, n) for (i = 1; i <= (n); ++i)
#define fab(i, a, b) for (i = (a); i <= (b); ++i)
#define fr(i, b, a) for (i = (b); i >= (a); --i)
#define endl "\n"
#define ln length

using namespace std;

/*
#include <ext/pb_ds/assoc_container.hpp>
using namespace __gnu_pbds;
typedef tree<int,null_type,less<int>,rb_tree_tag,
	tree_order_statistics_node_update> indexed_set;
//*/
typedef long long int ll;
#define int long int

typedef vector<ll> vll;
typedef pair<ll, ll> pll;
//typedef tuple<ll, ll, ll> tll

//* utility function
inline bool compare(ll i, ll j)
{
    return i > j;
}
//*/

//* function prototypes
template< typename T>
T modpow(T number, T power, T mod_value);
void seive(ll maximum_number);
//*/

//int row, column;
//int dx[8] = { 0,   1,  1,  1,  0,  -1, -1, -1};
//int dy[8] = {-1,  -1,  0,  1,  1,   1,  0, -1};
//              N   NE   E  SE   S   SW   W   NW
//int dx[4] = { 0,       1,      0,      -1    };
//int dy[4] = {-1,       0,      1,       0    };

const ll maxN = 2e5+10; const ll INF = 1e18;
const ll maxA = 1e7+10; const ll maxB = 320;

bitset<maxN
    +10>is_prime;
vll prime;

#ifdef DEBUG
#endif // DEBUG
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// ###################################################################################################################
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
map<ll, string>res = {{0, "No"}, {1, "Yes"}};
//ll arr[maxN+10];
ll cnt[maxN];
ll spd[maxA];

void create_spd()
{
    ll i, j;
    for (auto a : prime)
    {
        if (a*a > maxA) break;
        for (i = a*a; i <= maxA; i += a)
        {
            if (spd[i] == 0) spd[i] = a;
        }
    }
    for (i = 1; i <= maxA; i++)
    {
        if (spd[i] == 0) spd[i] = i;
    }
}

ll nod(ll n)
{
    ll tot_prime = 0;
    while (n > 1)
    {
        ll a = spd[n];
        cnt[tot_prime] = 0;
        while (n%a == 0)
        {
            cnt[tot_prime]++;
            n /= a;
        }
        tot_prime++;
    }
    ll ans = 1;
    ll i;
    f0(i, tot_prime)
    {
        ans *= cnt[i]+1;
    }
    return ans;
}

signed main()
{
    ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
    //freopen("input.txt", "r", stdin);
    //freopen("output.txt", "w", stdout);

    seive(10000LL);
    create_spd();
    ll number_of_test_case = 1, test_case;
    //cin >> number_of_test_case;
    for (test_case = 1; test_case <= number_of_test_case; test_case++)
    {
    	//cout << "Test #" << test_case << ": ";
    	//cout << "Case " << test_case << ": ";
    	ll i, j, k, m, n, query_type, q; ll a, b, x, y;

    	cin >> n;

    	ll ans = 0;
    	f1(k, n)
    	{
    	    ans += k*nod(k);
    	}
    	cout << ans  << endl;

    }
    return 0;
}


// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// ###################################################################################################################
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~









template< typename T>
T modpow(T number, T power, T mod_value)
{
    if (power == 0)
        return 1%mod_value;
    ll u = modpow(number,power/2,mod_value);
    u = (u*u)%mod_value;
    if (power%2 == 1)
        u = (u*number)%mod_value;
    return u;
}
void seive(ll maximum_number)
{
    ll i, j;
    is_prime.set(); is_prime.reset(0); is_prime.reset(1);
    for (i = 2; i*i <= maximum_number; i++)
    {
        if (is_prime.test(i) == true)
        {
            prime.PB(i);
            for (j = i*i; j <= maximum_number; j += i)is_prime.reset(j);
        }
    }
    for(; i <= maximum_number; i++)if (is_prime.test(i) == true)prime.PB(i);
}


Measured memory_bytes: 81800