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 ≤ 100).

Output

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

Examples

Input

2 2 2


Output

20


Input

5 6 7


Output

1520

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.
import static java.util.Arrays.deepToString;

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

public class Main {

    static final long mod = 1073741824;
    static void solve() throws Exception {
        int n = 1000001;
        long[] fact = new long[n];
        Arrays.fill(fact, 2);
        fact[1] = 1;
        for(int i = 2; i <= n/2; i++){
            for(int j = i + i; j < n; j += i){
                fact[j]++;
            }
        }
//      for(int i = 1; i < n; i++){
//          out.println(fact[i]);
//      }
        int a = nextInt();
        int b = nextInt();
        int c = nextInt();
        long ans = 0;
        for(int i = 1; i <= a; i++){
            for(int j = 1; j <= b; j++){
                for(int k = 1; k <= c; k++){
                    ans = (ans + fact[i * j * k] % mod) % mod;
                }
            }
        }
        out.print(ans);
    }

    static BufferedReader br;
    static StringTokenizer st;
    static PrintWriter out;

    static void debug(Object... a) {
        System.err.println(deepToString(a));
    }

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

    static String next() throws IOException {
        while (st == null || !st.hasMoreTokens()) {
            String line = br.readLine();
            if (line == null) {
                return null;
            }
            st = new StringTokenizer(line);
        }
        return st.nextToken();
    }

    static long nextLong() throws IOException {
        return Long.parseLong(next());
    }

    static double nextDouble() throws IOException {
        return Double.parseDouble(next());
    }

    public static void main(String[] args) {
        try {
            File file = new File("fn.in");
            InputStream input = System.in;
            OutputStream output = System.out;
            if (file.canRead()) {
                input = (new FileInputStream(file));
                output = (new PrintStream("fn.out"));
            }
            br = new BufferedReader(new InputStreamReader(input));
            out = new PrintWriter(output);
            solve();
            out.close();
            br.close();
        } catch (Throwable e) {
            e.printStackTrace();
            System.exit(1);
        }
    }
}