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>
using namespace std;
struct Edge {
  int to, next, val;
} edge[100005 << 1];
int head[100005], cnt;
void init() {
  memset(head, -1, sizeof(head));
  cnt = 0;
}
void add(int u, int v, int d) {
  edge[cnt].to = v;
  edge[cnt].next = head[u];
  edge[cnt].val = d;
  head[u] = cnt++;
}
bool isp[100005 * 10];
int prime[100005 * 10], tol;
const int M = 100005 * 10;
vector<pair<int, int> > ans;
bool check() {
  for (auto &c : ans) {
    if (c.first & 1) return false;
  }
  for (auto &c : ans) {
    c.first >>= 1;
  }
  return true;
}
int tolbits(int n, int &v) {
  int ret = 0;
  v = 0;
  while (n) {
    if (n & 1) ++v;
    n >>= 1;
    ++ret;
  }
  return ret;
}
bool isPrime(int n) {
  if (n < M) return !isp[n];
  int k = sqrt(n) + 1;
  for (int i = 2; i <= k; ++i) {
    if (n % i == 0) return false;
  }
  return true;
}
bool vis[100005 * 10];
int main() {
  for (int i = 2; i < M; ++i) {
    if (!isp[i]) prime[tol++] = i;
    for (int j = 0; j < tol and prime[j] * i < M; ++j) {
      isp[prime[j] * i] = true;
      if (i % prime[j] == 0) break;
    }
  }
  ios::sync_with_stdio(false);
  int n;
  cin >> n;
  long long res = 0;
  for (int i = 0; i < tol and prime[i] < n; ++i) {
    for (int j = 1; j * prime[i] <= n; ++j) {
      int k = n / (prime[i] * j);
      if (k >= 2 and !vis[prime[i] * j]) {
        res += 2ll * (k + 2) * (k - 1);
        vis[prime[i] * j] = true;
      }
    }
  }
  cout << res << "\n";
}
