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 java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.util.*;


public class Solution {
    private final static FastReader in = new FastReader();
    private final static PrintWriter out = new PrintWriter(System.out);
    private static ArrayList<String> set = new ArrayList<>();

    public static void main(String[] args) {
        int a = in.nextInt();
        int b = in.nextInt();
        int c = in.nextInt();
        int i, j, k, n, s, val = 0, res = 0;
        Map<Integer, Integer> map = new HashMap<>();
        for (i = 1; i <= a; i++) {
            for (j = 1; j <= b; j++) {
                for (k = 1; k <= c; k++) {
                    n = k * i * j;
                    if (!map.containsKey(n)) {
                        for (s = 1; s <= Math.sqrt(n); s++) {
                            if (n % s == 0) {
                                if ((n / s) == s) {
                                    val++;
                                } else {
                                    val += 2;
                                }

                            }
                        }
                        map.put(n, val);
                        res += val;
                        res %= (1 << 30);
                        val = 0;
                    } else {
                        res += map.get(n);
                    }
                }
            }
        }
        out.println(res);
        out.flush();
    }

    static void xSet(int l, int h, int c) {
        for (int i = l; i <= h; i++) {
            if (!set.contains(i + " " + c)) {
                set.add(i + " " + c);

            }
        }

    }

    static void ySet(int l, int h, int c) {
        for (int i = l; i <= h; i++) {
            if (!set.contains(c + " " + i)) {
                set.add(c + " " + i);

            }
        }

    }

    private static final class FastReader {
        private static BufferedReader BF;
        private static StringTokenizer ST;

        public FastReader() {
            BF = new BufferedReader(new InputStreamReader(System.in));
            ST = null;
        }

        public final String next() {
            while (ST == null || !ST.hasMoreTokens()) {
                try {
                    ST = new StringTokenizer(BF.readLine());
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            return ST.nextToken();
        }

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

    }


}