Problem: Let's denote d(n) as the number of divisors of a positive integer n. You are given three integers a, b and c. Your task is to calculate the following sum:

<image>

Find the sum modulo 1073741824 (230).

Input

The first line contains three space-separated integers a, b and c (1 ≤ a, b, c ≤ 2000).

Output

Print a single integer — the required sum modulo 1073741824 (230).

Examples

Input

2 2 2


Output

20


Input

4 4 4


Output

328


Input

10 10 10


Output

11536

Note

For the first example.

  * d(1·1·1) = d(1) = 1; 
  * d(1·1·2) = d(2) = 2; 
  * d(1·2·1) = d(2) = 2; 
  * d(1·2·2) = d(4) = 3; 
  * d(2·1·1) = d(2) = 2; 
  * d(2·1·2) = d(4) = 3; 
  * d(2·2·1) = d(4) = 3; 
  * d(2·2·2) = d(8) = 4. 



So the result is 1 + 2 + 2 + 3 + 2 + 3 + 3 + 4 = 20.

Solution (in JAVA):

Solution:

import java.io.*;
import java.util.StringTokenizer;

public class B146 {

    public static void main(String[] args) throws IOException {
        new B146().run();
    }

    private void solve() throws IOException {
        int a = nextInt();
        int b = nextInt();
        int c = nextInt();

        long result = 0;

        cache = new int[a * b * c + 1];

        for (int i = 1; i <= a; i++)
            for (int j = 1; j <= b; j++)
                for (int k = 1; k <= c; k++)
                    result += countD(i * j * k);

        out.print(result);
    }

    //70 70 70 = 14425864
    int[] cache;

    long countD(int n) {
        int result = 0;
        if (cache[n] != 0) return cache[n];
        for (int i = 1; i * i <= n; i++)
        {
            if (n % i == 0)
            {
                result++;
                if (i != n / i)
                {
                    result++;
                }
            }
        }
        cache[n] = result;
        return result;
    }

    private PrintWriter out;
    private StringTokenizer st;
    private BufferedReader in;

    void run() {
        out = new PrintWriter(new OutputStreamWriter(System.out));
        in = new BufferedReader(new InputStreamReader(System.in));
        try
        {
            solve();
        } catch (Throwable e)
        {
            e.printStackTrace();
        } finally
        {
            try
            {
                in.close();
                out.close();
            } catch (IOException e)
            {
                e.printStackTrace();
            }
        }
    }

    private int nextInt() throws IOException {
        return Integer.parseInt(next());
    }

    private String next() throws IOException {
        while (st == null || !st.hasMoreTokens())
        {
            st = new StringTokenizer(in.readLine());
        }
        return st.nextToken();
    }
}