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:
/**
 *
 * @author Mr_Argus
 */
import java.util.*;
import java.io.*;
public class Main{
    public static void main(String args[])throws Exception{
        BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer token = new StringTokenizer(in.readLine());
        int n = Integer.parseInt(token.nextToken());
        int m = Integer.parseInt(token.nextToken());
        int l = Integer.parseInt(token.nextToken());
        int R[] = new int[100];
        for(int i=2;i<=10;i++){
           for(int j=i*i;j<100;j+=i){
              R[j]=1;
           }
        }
        int sum = 0;
        for(int i=1;i<=n;i++){
            for(int j=1;j<=m;j++){
                for(int k=1;k<=l;k++){
                    sum+=getNumOfDiv(i*j*k,R);
                }
            }
        }
        System.out.println(sum%(int)Math.pow(2, 30));
    }
    public static int getNumOfDiv(int n,int R[]){
        int cnt[] = new int[100];
        for(int i=2;i<100;i++){
           if(R[i]==0){
             while(n%i==0){
               n/=i;
               cnt[i]++;
             }
           }
        }
        int mult = 1;
        for(int i=0;i<100;i++){
           if(cnt[i]>0){
             mult*=(cnt[i]+1);
           }
        }
        return mult;
    }
}