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.
import java.util.*;
import java.io.*;
public class Main
{
      static int n;
      static long[] s;
      static ArrayList<Integer> p;
      static void sieve() 
      { 
            int x = (int)1e5;
            p = new ArrayList<Integer>();
            boolean prime[] = new boolean[x+1]; 
            for(int i = 0 ; i < x ; i++) prime[i] = true; 
            for(int p = 2; p*p <= x; p++) 
            {
                  if(prime[p] == true) 
                  {
                        for(int i = p*p; i <= x; i += p) prime[i] = false; 
                  } 
            }
            for(int i = 2; i <= x; i++) 
            { 
                  if(prime[i] == true) p.add(i);
            }
      }
      public static long sigma(int x)
      {
            if(Collections.binarySearch(p,x) >= 0) return (x + 1);
            if(x == 1) return 1;
            if(s[x] > 0) return s[x];
            int k = 0;
            int pow = 0;
            int prime = p.get(0);
            Loop:
            while(true)
            {
                  if(x % prime == 0) 
                  {
                        pow++;
                        x /= prime;
                  }
                  else
                  {
                        if(pow > 0) break Loop;
                        prime = p.get(++k);
                  }
            }
            if(x == 1) return ((long)Math.pow(prime,pow+1) - 1)/((long)prime - 1);
            return (sigma((int)Math.pow(prime,pow)) * sigma(x));
      }
	public static void main (String[] args) throws Exception
	{
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		n = Integer.parseInt(br.readLine());
		sieve();
		s = new long[n+1];
		for(int i = 1 ; i <= n ; i++) s[i] = sigma(i);
		for(int i = 2 ; i <= n ; i++) s[i] = s[i]-i-1;
		long sum = 0;
	      for(int i = 2 ; i <= n ; i++) sum += s[i];
	      System.out.println(sum * 4);
	}
}
