You are given a positive integer n greater or equal to 2. For every pair of integers a and b (2 ≤ |a|, |b| ≤ n), you can transform a into b if and only if there exists an integer x such that 1 < |x| and (a ⋅ x = b or b ⋅ x = a), where |x| denotes the absolute value of x.

After such a transformation, your score increases by |x| points and you are not allowed to transform a into b nor b into a anymore.

Initially, you have a score of 0. You can start at any integer and transform it as many times as you like. What is the maximum score you can achieve?

Input

A single line contains a single integer n (2 ≤ n ≤ 100 000) — the given integer described above.

Output

Print an only integer — the maximum score that can be achieved with the transformations. If it is not possible to perform even a single transformation for all possible starting integers, print 0.

Examples

Input

4


Output

8

Input

6


Output

28

Input

2


Output

0

Note

In the first example, the transformations are 2 → 4 → (-2) → (-4) → 2.

In the third example, it is impossible to perform even a single transformation.
#include <bits/stdc++.h>
using namespace std;
const int oo = 1e9;
const int inf = 0x3f3f3f3f;
const long long OO = 1e18;
const long long INF = 0x3f3f3f3f3f3f3f3f;
const long double pi = acos(-1);
const long double e = 2.718281828459045;
const long double eps = 1e-8;
const int maxN = 1e5 + 5;
bool use[maxN];
vector<int> pow_[maxN];
long long res[maxN];
int main(int argc, char* argv[]) {
  vector<int> prime;
  prime.clear();
  for (int i = 2; i ^ maxN; ++i) {
    if (!use[i]) {
      prime.push_back(i);
      for (int j = i << 1; j < maxN; j += i) {
        use[j] = true;
      }
    }
  }
  for (auto p : prime) {
    pow_[p].clear();
    pow_[p].push_back(1);
    for (int now = 1; 1LL * now * p < 1LL * maxN; now *= p) {
      pow_[p].push_back(now * p);
    }
    for (int i = 1, n = (int)pow_[p].size(); i ^ n; ++i) {
      pow_[p][i] += pow_[p][i - 1];
    }
  }
  for (int i = 2; i ^ maxN; ++i) {
    vector<pair<int, int> > factor;
    factor.clear();
    int now = i;
    for (auto p : prime) {
      if (now % p == 0) {
        int cnt;
        for (now /= p, cnt = 1; now % p == 0; now /= p, ++cnt)
          ;
        factor.push_back(make_pair(p, cnt));
      }
      if (now == 1) {
        break;
      }
    }
    res[i] = 1;
    for (auto fuck : factor) {
      res[i] *= pow_[fuck.first][fuck.second];
      if (fuck.second >= (int)pow_[fuck.first].size()) {
        ;
        for (auto shit : factor) {
          ;
          ;
        };
        assert(false);
      }
    }
    res[i] -= i + 1;
  }
  for (int i = 99900; i <= 100000; ++i) {
    ;
    ;
  }
  for (int i = 0; i ^ 7; ++i) {
    ;
    ;
  }
  int n;
  cin >> n;
  long long ans = 0;
  for (int i = 2; i <= n; ++i) {
    ans += res[i];
  }
  cout << (ans << 2) << endl;
  return 0;
}
