You are given a rectangular board of *M* × *N* squares. Also you are given an unlimited number of standard domino pieces of 2 × 1 squares. You are allowed to rotate the pieces. You are asked to place as many dominoes as possible on the board so as to meet the following conditions:

1. Each domino completely covers two squares.

2. No two dominoes overlap.

3. Each domino lies entirely inside the board. It is allowed to touch the edges of the board.

Find the maximum number of dominoes, which can be placed under these restrictions.
In a single line you are given two integers *M* and *N* — board sizes in squares (1 ≤ *M* ≤ *N* ≤ 16).
"""
EXPLANATION:- There is a rectangular board of M*N squares and we are given unlimited Domino pieces of 2*1 squares, rotation of people is allowed if necessary. We have to make a program which tells us the maximum number of
domino pieces we can fill in the entire rectangular board
.
OBJECTIVE:-
We are asked to create a program which will take two inputs i.e M and N, and give an output i.e the maximum number of domino pieces which can be fit in the rectangular board of dimensions M*N

STEPS INVOLVED:-
i) User has to give the input i.e the dimensions of the rectangular board.
ii) If both M and N are odd numbers then the program will print the maximum number of domino pieces using the formula
    (M*N-1)/2
iii) If M is even or N is even or both M and N are even then the program will print the maximum number of domino pieces using the formula
    (M*N/2)

NOTE:-
Range of M and N = (1<=M,N<=16)
"""

M,N = map(int, input().split())
if 1<=(M and N)<=16:
    if M%2 == 1 and N%2 == 1:
        print((M*N-1)/2)
    else:
        print(M*N/2)
