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.io.PrintWriter;
import java.util.Arrays;
import java.util.Scanner;

public class Main {
	
	public static void main(String[] args) {
		// 入力
		final int a, b, c;
		try(Scanner scan = new Scanner(System.in)) {
			a = scan.nextInt();	// 2≤A，B，C≤10^9
			b = scan.nextInt();
			c = scan.nextInt();
		}
		
		long result;
		// 偶数の辺があれば、そこで2等分できる。
		if (a % 2 == 0 || b % 2 == 0 || c % 2 == 0) {
			result = 0;
		} else {
			int[] edges = {a, b, c};
			// 短い辺2つの積 * 1(残りの辺も奇数)
			Arrays.sort(edges);
			result = (long) edges[0] * edges[1];
		}
		
		// 出力
		try (PrintWriter out = new PrintWriter(System.out)) {
			out.println(result);
		}

	}

}