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.util.ArrayList;
import java.util.StringTokenizer;

/**
 *
 * @author xeyyam
 */
public class b_236 {

    ArrayList<Integer> pr = new ArrayList<Integer>();
    
    public void setPrimes( int n ){
        
        boolean primes[] = new boolean[n + 1];
        primes[0] = true;
        primes[1] = true;
        
        for(int i = 2 ; i<=Math.sqrt(n) + 1 ; i++ ){
            if(!primes[i])
            for(int j = i + 1 ; j<=n ; j++){
                if(j % i==0) primes[j] = true; 
            }
        }
        
        for(int i =2 ; i<=n ; i++)
            if(!primes[i])pr.add(i);
        
    }
    
    
    public void run(){
        InputReader reader = new InputReader(System.in);
        int a ,b , c;
        
        a = reader.nextInt();
        b = reader.nextInt();
        c = reader.nextInt();
        
        setPrimes(100);
        
        
        //System.out.println(pr);
        long ans = 0;
         
        for(int i =1 ;i<=a ; i++){
            for(int j=1 ; j<=b ; j++){
                for(int k = 1 ; k<=c ; k++){
                    
                    long num = i * j  * k;
                   // System.out.print(num);
                    int tmp = 0 ;
                    int lcl = 1 ;
                    
                    for(int t = 0 ; t < pr.size() ; t++ ){
                        if( num  < 1  ) break;
                        tmp = 0;
                        int nextPrime = pr.get(t);
                        if(num%nextPrime==0)
                        while(num > 1 && num%nextPrime==0){
                            num/=nextPrime;
                            tmp++;
                        }
                        
                        lcl *= (tmp + 1);
                        
                        
                    }
                    
                    //System.out.println( " " + lcl );
                    
                    ans  =  ( ans + lcl%1073741824 ) % 1073741824 ;
                    
                }
            }
        }
        
        
        System.out.println(ans);
        
    }
    
    
    public static void main(String args[]){
        new b_236().run();
    }
    
    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());
        }
        
        public long nextLong() {
            return Long.parseLong(next());
        }
    }
}