h, w = map(int, input().split())

# Create a 2D array dp and initialize it with zeros
dp = [[0] * (w + 1) for _ in range(h + 1)]

# Iterate through all possible carpet sizes
for i in range(1, h + 1):
    for j in range(1, w + 1):
        # Initialize dp[i][j] with the value from the previous row
        dp[i][j] = dp[i - 1][j]

        # Iterate through possible carpet widths
        for k in range(1, j + 1):
            # Calculate the maximum area considering the current carpet
            max_area = k * 1 + dp[i][j - k]
            dp[i][j] = max(dp[i][j], max_area)

# Print the result, which is the maximum total carpet area
print(dp[h][w])