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.*;

public class Main
{
    static final int INF = Integer.MAX_VALUE;
    
    public static void main(String[] args) throws IOException
    {
        FastScanner cin = new FastScanner(System.in);
        PrintWriter cout = new PrintWriter(System.out);
        int n = 1000000;
        int[] d = new int[n+10];
        
        d[1] = 1;
        for(int i=2; i<=n; i++)
        {
            d[i] += 2;
            for(int j=2*i; j<=n; j+=i)
                d[j]++;
        }
        
        int ans = 0;
        int a = cin.nextInt(), b = cin.nextInt(), c = cin.nextInt();

        for(int i=1; i<=a; i++)
            for(int j=1; j<=b; j++)
                for(int k=1; k<=c; k++)
                {
                    ans += d[i*j*k];
                    if( ans >= 1073741824 )
                        ans -= 1073741824;
                }
        cout.print(ans);
        
        cout.close();
    }
}

class FastScanner
{
    InputStream is;
    byte buff[] = new byte[1024];
    int buffChars = 0, currentChar = -1;
    
    public FastScanner(InputStream inputStream)
    {
        is = inputStream;
    }
    public boolean hasNext() throws IOException
    {
        return buffChars >= 0;
    }
    public int nextChar() throws IOException
    {
        if( currentChar==-1 || currentChar>=buffChars )
        {
            currentChar = 0;
            buffChars = is.read(buff);
        }
        if( buffChars <= 0 )
            return -1;
        return (char) buff[currentChar++];
    }
    public String nextString() throws IOException
    {
        int ch;
        StringBuilder bldr = new StringBuilder();
        
        while( isSpace(ch = nextChar()) )
            ;
        do
        {
            bldr.append((char)ch);
        } while( !isSpace(ch = nextChar()) );
        
        return bldr.toString();
    }
    public int nextInt() throws IOException
    {
        int result=0, sign=1, ch;
        
        while( isSpace(ch = nextChar()) )
            ;
        if( ch == '-' )
        {
            sign = -1;
            ch = nextChar();
        }
        do
        {
            if( ch<'0' || ch>'9' )
                throw new NumberFormatException("Found '" + ch + "' while parsing for int.");
            result *= 10;
            result += ch-'0';
        } while( !isSpace(ch = nextChar()) );
        
        return sign*result;
    }
    public long nextLong() throws IOException
    {
        long result = 0;
        int sign=1, ch;
        
        while( isSpace(ch = nextChar()) )
            ;
        if( ch == '-' )
        {
            sign = -1;
            ch = nextChar();
        }
        do
        {
            if( ch<'0' || ch>'9' )
                throw new NumberFormatException("Found '" + ch + "' while parsing for int.");
            result *= 10;
            result += ch-'0';
        } while( !isSpace(ch = nextChar()) );
        
        return sign*result;
    }
    private boolean isSpace(int ch)
    {
        return ch=='\n' || ch==' ' || ch=='\t' || ch=='\r' || ch==-1;
    }
    public void close()  throws IOException
    {
        is.close();
    }
}
