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.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;
import java.util.StringTokenizer;

public class Cf236b {
    public static void main(String[] args) {
        InputStream inputStream = System.in;
        OutputStream outputStream = System.out;
        InputReader in = new InputReader(inputStream);
        PrintWriter out = new PrintWriter(outputStream);
        TaskA solver = new TaskA();
        solver.solve(1, in, out);
        out.close();
    }
}

class TaskA {
    static final int MAX = 1000001;

    private List<Integer> generatePrimes(int n) {
        List<Integer> primes = new ArrayList<Integer>();
        if (n < 2) return primes;
        primes.add(2);
        if (n < 3) return primes;
        int[] buffer = new int[MAX];
        buffer[2] = 1;
        n++;
        for (int i = 3; i < n; i += 2) {
            if (buffer[i] == 0) {
                primes.add(i);
                for (int j = i * 2; j < n; j += i) {
                    buffer[j] = 1;
                }
            }
        }
        return primes;
    }

    private int countDivisor(int n, List<Integer> primes) {
        int res = 1;
        for (int p : primes) {
            if (n < p) break;
            int counter = 1;
            while (n % p == 0) {
                counter++;
                n /= p;
            }
            res *= counter;
        }
        return res;
    }

    public void solve(int testNumber, InputReader in, PrintWriter out) {
        List<Integer> primes = generatePrimes(100);
        int a = in.nextInt();
        int b = in.nextInt();
        int c = in.nextInt();
        int res = 0;
        int[] buffer = new int[MAX];

        buffer[1] = 1;

        for (int i = 1; i <= a; i++) {
            for (int j = 1; j <= b; j++) {
                for (int k = 1; k <= c; k++) {
                    int product = i * j * k;
                    if (buffer[product] == 0 && product > 1) {
                        buffer[product] = countDivisor(product, primes);
                    }
                    res += buffer[product];
                }
            }
        }

        out.println(res);
    }
}

class InputReader {
    private BufferedReader reader;
    private StringTokenizer tokenizer;

    public InputReader(InputStream stream) {
        reader = new BufferedReader(new InputStreamReader(stream));
        tokenizer = null;
    }

    public String next() {
        while (tokenizer == null || !tokenizer.hasMoreTokens()) {
            try {
                tokenizer = new StringTokenizer(reader.readLine());
            } catch (IOException e) {
                throw new RuntimeException(e);
            }
        }
        return tokenizer.nextToken();
    }

    public int nextInt() {
        return Integer.parseInt(next());
    }
}