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;
inline int read() {
  int x = 0, f = 1;
  char ch = getchar();
  while (!isdigit(ch)) {
    if (ch == '-') f = -1;
    ch = getchar();
  }
  while (isdigit(ch)) {
    x = x * 10 + ch - '0';
    ch = getchar();
  }
  return x * f;
}
struct Vector {
  double x, y, z;
} xyz[300100];
Vector operator+(const Vector &a, const Vector &b) {
  return (Vector){a.x + b.x, a.y + b.y, a.z + b.z};
}
Vector operator-(const Vector &a, const Vector &b) {
  return (Vector){a.x - b.x, a.y - b.y, a.z - b.z};
}
Vector operator*(const Vector &a, const double &b) {
  return (Vector){a.x * b, a.y * b, a.z * b};
}
Vector operator/(const Vector &a, const double &b) {
  return (Vector){a.x / b, a.y / b, a.z / b};
}
Vector operator^(const Vector &a, const Vector &b) {
  return (Vector){a.y * b.z - a.z * b.y, a.z * b.x - a.x * b.z,
                  a.x * b.y - a.y * b.x};
}
double operator&(const Vector &a, const Vector &b) {
  return a.x * b.x + a.y * b.y + a.z * b.z;
}
inline double len(Vector a) { return sqrt(a & a); }
inline double getV(Vector a, Vector b, Vector c) { return a & (b ^ c); }
inline double getA(Vector a, Vector b, Vector c) {
  Vector x = a ^ c, y = a ^ b;
  return acos(x & y / len(x) / len(y));
}
long long ans;
int main() {
  int n = read();
  for (int i = 2; i <= (n / 2); i++)
    for (int j = 2; i * j <= n; j++) ans += 4 * j;
  printf("%I64d\n", ans);
}
