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.
//package Div2_520;

import java.util.Scanner;

public class D {
    static int n;
    static int snm[][];

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        n = in.nextInt() + 1;
        marked = new long[n];
        snm = new int[n][2];
        for (int i = 0; i < n; i++) {
            snm[i][0] = i;
        }
        func();
        long mas[] = new long[n];
        for (int i = 2; i < n; i++) {
            mas[snm[i][0]] += marked[i];
        }
        long ans = 0;
        for (int i = 0; i < n; i++) {
            if (mas[i] > ans) ans = mas[i];
        }
        System.out.println(ans);
    }

    private static void func() {
        for (int i = 0; i < n; i++) {
            marked[i] = -1;
        }
        for (int i = 2; i < n; i++) {
            if (marked[i] == -1) {
                fu(i);
            }
        }
    }

    private static void fu(int x) {
        marked[x] = 0;
        for (long i = 2; i * x < n; i++) {
            marked[x] += 4 * i;
            int y = pred(x);
            int z = pred((int) i * x);
            if (y != z) {
                if (snm[y][1] == snm[z][1]) {
                    snm[y][1]++;
                    snm[z][0] = y;
                } else if (snm[y][1] > snm[z][1]) {
                    snm[z][0] = y;
                } else {
                    snm[y][0] = z;
                }
            }
        }
    }

    private static int pred(int l) {
        while (snm[l][0] != l) {
            l = snm[l][0];
        }
        return l;
    }

    static long marked[];

}
