We have a rectangular parallelepiped of size A×B×C, built with blocks of size 1×1×1. Snuke will paint each of the A×B×C blocks either red or blue, so that:

* There is at least one red block and at least one blue block.
* The union of all red blocks forms a rectangular parallelepiped.
* The union of all blue blocks forms a rectangular parallelepiped.



Snuke wants to minimize the difference between the number of red blocks and the number of blue blocks. Find the minimum possible difference.

Constraints

* 2≤A,B,C≤10^9

Input

The input is given from Standard Input in the following format:


A B C


Output

Print the minimum possible difference between the number of red blocks and the number of blue blocks.

Examples

Input

3 3 3


Output

9


Input

2 2 4


Output

0


Input

5 3 5


Output

15
import java.util.*;
import java.math.*;
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int a = sc.nextInt();
        int b = sc.nextInt();
        int c = sc.nextInt();
        if (a <= b && b <= c) {
            int temp = a;
            a = c;
            c = temp;
        } else if (a <= c && c <= b) {
            int temp = a;
            a = b;
            b = temp;
        } else if (b <= a && a <= c) {
            int temp = a;
            a = c;
            c = temp;
        } else if (b <= c && c <= a) {
        } else if (c <= a && a <= b) {
            int temp = a;
            a = b;
            b = temp;
        } else if (c <= b && b <= a) {
        }
            
        BigInteger A, B, C, ans;
        A = new BigInteger(Integer.toString(a));
        B = new BigInteger(Integer.toString(b));
        C = new BigInteger(Integer.toString(c));
        BigInteger two = new BigInteger("2");
        if (a%2==0||b%2==0||c%2==0) ans = BigInteger.ZERO;
        else ans = ((((A.add(BigInteger.ONE)).divide(two)).subtract(A.divide(two))).multiply(B)).multiply(C);
        System.out.println(ans);
        
    }
}
    
