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;
inline void file() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(NULL);
  if (0) {
    freopen(".in", "r", stdin);
    freopen(".out", "w", stdout);
  }
}
const int PX[8] = {1, 0, -1, 0, 1, 1, -1, -1},
          PY[8] = {0, 1, 0, -1, -1, 1, 1, -1}, N = 1e5 + 10, INF = 1e9,
          MOD = 1e9 + 7;
const long long INFL = 1e18, MODL = 1e9 + 7;
const long double EPS = 1e-6;
template <typename type>
inline void up(type& a, type b) {
  if (a < b) a = b;
}
inline long long rnd(long long l = 1, long long r = INFL) {
  unsigned long long ans = rand();
  ans = (ans << 16LL) ^ rand();
  ans = (ans << 16LL) ^ rand();
  ans = (ans << 16LL) ^ rand();
  ans %= r - l + 1;
  return (long long)ans + l;
}
int n, all, ansM[N], ansP[N];
bitset<N> usdP, usdM;
vector<int> gp[N], gm[N];
void dfsP(int v);
void dfsM(int v);
void dfsP(int v) {
  all += ansP[v];
  usdP[v] = true;
  for (int i : gp[v])
    if (i > 0) {
      if (!usdP[i]) dfsP(i);
    } else {
      if (!usdM[-i]) dfsM(-i);
    }
}
void dfsM(int v) {
  all += ansM[v];
  usdM[v] = true;
  for (int i : gm[v])
    if (i > 0) {
      if (!usdP[i]) dfsP(i);
    } else {
      if (!usdM[-i]) dfsM(-i);
    }
}
int main() {
  file();
  cin >> n;
  for (int i = 2; i <= n; ++i)
    for (int j = i * 2; j <= n; j += i) {
      gp[i].push_back(j);
      gp[j].push_back(i);
      gp[i].push_back(-j);
      gp[j].push_back(-i);
      gm[i].push_back(-j);
      gm[j].push_back(-i);
      gm[i].push_back(j);
      gm[j].push_back(i);
    }
  for (int i = 2; i <= n; ++i)
    for (int j : gp[i]) ansP[i] += abs(j / i);
  for (int i = 2; i <= n; ++i)
    for (int j : gm[i]) ansM[i] += abs(j / i);
  int ans = 0;
  for (int i = 1; i <= n; ++i)
    if (!usdP[i]) {
      all = 0;
      dfsP(i);
      ans = max(ans, all);
    }
  cout << ans;
}
