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.io.StreamTokenizer;
import java.util.HashMap;
import java.util.Map;
import java.util.logging.Level;
import java.util.logging.Logger;

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
/**
 *
 * @author Tibor
 */
public class test_B {
    //   static java.io.InputStreamReader converter = new java.io.InputStreamReader(System.in);
//    static java.io.BufferedReader in = new java.io.BufferedReader(converter);
//
//    public static String readLine() {
//        String s = "";
//        try {
//
//            s = in.readLine();
//        } catch (Exception e) {
//            System.out.println("Error! Exception: " + e);
//        }
//        return s;
//    }

    static StreamTokenizer in = new StreamTokenizer(new BufferedReader(
            new InputStreamReader(System.in)));
    static PrintWriter out = new PrintWriter(System.out);

//    static {
//        in.ordinaryChars('-', '-');
//        in.ordinaryChars('+', '+');
//        in.wordChars('-', '-');
//        in.wordChars('+', '+');
//    }
    static int nextInt() {
        try {
            in.nextToken();
        } catch (IOException ex) {
        }
        return (int) in.nval;
    }

    static String nextString() {
        try {
            in.nextToken();
        } catch (IOException ex) {
        }
        return in.sval;
    }
    static int ig=100*100*100+1;
    static int D[] = new int[ig];
    static{
        for(int i=2;i<ig;i++){
            if(D[i]==0){
                int n=i,sz=1;
                for(;;){
                    n+=i;
                    sz++;
                    if(n>=ig)
                        break;
                    D[n]+=D[sz]+1;
                }                
            }
        }
        for(int i=2;i<ig;i++){
            D[i]+=2;
        }
        D[0]=1;
    }

    static int d(int a,int b,int c) {
        if (D[a]==0) {
            int d = 2;
            int i = 2;
            int ig=a/2;
            int minu=1;
            if(a%2==1){
                minu=2;
                if(i%2==0){
                    i=3;
                }
            }
            for (; i <= ig; i+=minu) {
                if (a % i == 0) {
                    d++;
                }
            }
            D[a]= d;
        }
        return D[a];
    }

    public static void main(String args[]) {
        D[1]=1;
        int A = nextInt(), B = nextInt(), C = nextInt();
        long d=0;
        for(int a=A;a>0;a--) {
            for(int b=B;b>0;b--) {
                for(int c=C;c>0;c--){
                    d+=D[a*b*c];
//                    d+=d(a*b*c,0,0);
//                    System.out.printf("%d %d %d *%d  d %d\n",a,b,c,a*b*c,d(a*b*c));
                }
            }
        }
        System.out.println(d);
    }
}
