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.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.PriorityQueue;
import java.util.Scanner;
import java.util.Set;
import java.util.TreeMap;
import java.util.Map.Entry;

public class A {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int a = sc.nextInt();
        int b = sc.nextInt();
        int c = sc.nextInt();
        int size = a * b * c;
        int[] arr = new int[size+1];
        int count = 0;
        for(int i = 1;i <= size;i++){
            for(int j = i;j <= size;j+=i){
                arr[j]++;
                count++;
            }
        }
        int ans = 0;
        int mod = 1073741824 ;
        for(int i =1;i <= a;i++){
            for(int j = 1;j <= b;j++){
                for(int k = 1;k <=c;k++){
                    ans += arr[i*j*k] % mod;
                    ans = ans % mod;
                }
            }
        }
        System.out.println(ans);
        
    }

    static int calculatenCr(int n, int r){
        if(r > n) return 0;
        return factorial(n)/(factorial(n-r)* factorial(r));
    }
    static int factorial(int n){
        if(n == 0 || n == 1) return 1;
        int ans = 1;
        while(n-- > 0){
            ans *= n;
            n--;
        }
        return ans;
    }
    static int gcd(int a, int b) {
        if (b == 0)
            return a;
        return gcd(b, a % b);
    }

    static class Container implements Comparable<Container> {
        int boxes;
        int matches;

        public Container(int boxes, int matches) {
            this.boxes = boxes;
            this.matches = matches;
        }

        @Override
        public int compareTo(Container o) {
            return (Math.min(this.boxes * 2, this.matches) - Math.min(this.boxes, this.matches))
                    - (Math.min(o.boxes * 2, o.matches) - Math.min(o.boxes, o.matches));

        }

    }
}