Problem:
 Score : 100 points    Problem Statement There is a right triangle ABC with ∠ABC=90° .  Given the lengths of the three sides, |AB|,|BC| and |CA| , find the area of the right triangle ABC .  It is guaranteed that the area of the triangle ABC is an integer.      Constraints  1 \leq |AB|,|BC|,|CA| \leq 100  All values in input are integers.  The area of the triangle ABC is an integer.         Input Input is given from Standard Input in the following format:  |AB|  |BC|  |CA|       Output Print the area of the triangle ABC .        Sample Input 1 3 4 5      Sample Output 1 6   This triangle has an area of 6 .       Sample Input 2 5 12 13      Sample Output 2 30  This triangle has an area of 30 .       Sample Input 3 45 28 53      Sample Output 3 630  This triangle has an area of 630 .

Solution (Python):
a = [int(i) for i in input().split() ]
a.sort()
print(int((a[0] * a[1]) /2))

Solution (Python):
a,b,c=map(int,input().split())
l=[a,b,c]
x=max(l)
ans=1
for i in range(3):
  if l[i]!=x:
    ans*=l[i]
print(ans//2)

Solution (Python):


import numpy
import scipy

from collections import defaultdict
from pprint import pprint

a,b,c = [int(x) for x in input().split(" ")]

print (int(a*b/2))

Solution (Python):
num = list(map(int,input().split()))
num.sort()
a = num[0]
b = num[1]
print(str(int(a * b / 2)))

Solution (Python):
a,b,c=map(int,input().split())
if a > c and a > b : print(int(c*b/2))
if b > a and b > c : print(int(a*c/2))
if c > a and c > b : print(int(a*b/2))

Solution (Python):
a, b, c = map(int, input().split())
print(a*b//2)

Solution (Python):
a, b, c = map(int, input().split(' '))
print(int(a*b/2))

Solution (Python):
a, b, c=map(int,input().split())
print(a*b//2)

Solution (Python):
AB,BC,CA = map(int,input().split())
print(int(AB*BC/2))

Solution (Python):
a, b, c = map(int, input().split())
print(int(a*b/2))

Solution (Python):
A, B, C=map(int,input().split())
print(int(A*B/2))

Solution (Python):
a,b,c=map(int,input().split(" "))
print(int(a*b/2))

Solution (Python):
a,b,c = map(int,input().split())
s = a * b // 2
print(s)

Solution (Python):

a,b,c = map(int,input().split())
s = (a+b+c)/2.0
S = (s * (s-a) * (s-b) * (s-c)) ** 0.5
print (int(S))

Solution (Python):
a = list(map(int,input().split()))

sorted(a)

print(int(a[0]*a[1]/2))

Solution (Python):

"""
Created on Sun Jan 20 20:51:22 2019

@author: Owner
"""

import collections
import scipy.misc
import sys
import numpy as np
import math
from operator import itemgetter
import itertools
import copy


def prime_decomposition(n):
  i = 2
  table = []
  while i * i <= n:
    while n % i == 0:
      n /= i
      table.append(int(i))
    i += 1
  if n > 1:
    table.append(int(n))
  return table   

def digit(i):
    if i > 0:
        return digit(i//10) + [i%10]
    else:
        return []
    
def getNearestValueIndex(list, num):
    """
    概要: リストからある値に最も近い値のインデックスを取得する関数
    @param list: データ配列
    @param num: 対象値
    @return 対象値に最も近い値
    """

    
    idx = np.abs(np.asarray(list) - num).argmin()
    return idx

"""
N, X = map(int, input().split())

x = [0]*N
x[:] = map(int, input().split())

P = [0]*M
Y = [0]*M
for m in range(M):
    P[m], Y[m] = map(int, input().split())
    
all(nstr.count(c) for c in '753')
"""


x = [0]*3
x[:] = map(int, input().split())

x.sort(reverse = False)
print(int(1/2 * x[0]*x[1]))

Solution (Python):
a, b, c = sorted(list(map(int, input().split())))
print(a * b // 2)

Solution (Python):
a,b,c = map(int,input().split())
print(int(a * b / 2))

Solution (Python):
AB, BC, CA = map(int, input().split())

print(AB*BC//2)

Solution (Python):
abc = list(map(int, input().split()))
abc.sort()

print(abc[0]*abc[1]//2)

Solution (Python):
a, b, c = map(int, input().split())
print( int(a * b / 2) )

Solution (Python):
AB, BC, CA  = map(int, input().split())
print(int(AB * BC / 2))

Solution (Python):
a, b, c = map(int, input().split())
print(a*b//2)

Solution (Python):
AB, BC, CA = map(int, input().split())
print(AB * BC // 2)

Solution (Python):
n1, n2, n3 = list(map(int, input().split())) 
print(int(n1*n2/2))

Solution (Python):



A,B,C=list(map(int,input().split()))

s=(A+B+C)/2
ans=(s*(s-A)*(s-B)*(s-C))**(1/2)
print(int(ans))

Solution (Python):
a, b, c = map(int, input().split())

print(int(a * b / 2))

Solution (Python):
a, b, c = map(int, input().split())
s = (a + b + c)/ 2

print(int((s*(s-a)*(s-b)*(s-c))**(1/2)))

Solution (Python):
a, b, _ = list(map(int, input().split()))
print(a * b // 2)

Solution (Python):
a,b,c = map(int, input().split(" "))

r = int(a*b/2)

print(r)

Solution (Python):
a = list(map(int, input().split()))

ab = a[0]
bc = a[1]
print(int(ab*bc/2))

Solution (Python):
l=list(map(int,input().split()))
l.sort()
print(int(l[0]*l[1]/2))

Solution (Python):
a,b, c = map(int, input().split())
S=a*b/2
print(int(S))

Solution (Python):

def getIntList(): return [int(x) for x in input().split()]
a,b,c = getIntList()
print(a*b//2)

Solution (Python):
AB, BC, CD = map(int, input().split())

print(int(AB*BC*0.5))

Solution (Python):
ab,bc,ca=map(int, input().split())
print(int(ab*bc/2))

Solution (Python):
a,b,c = input().split()
a = int(a)
b = int(b)
c = int(c)

print(int(a * b / 2))

Solution (Python):

ab,bc,ca = map(int, input().split())
print(bc*ab//2)

Solution (Python):
import math
a,b,c = map(int,input().split())
print(math.floor(a*b/2))

Solution (Python):
ab, bc, ca = [int(_) for _ in input().split(' ')]
print(ab * bc // 2)

Solution (Python):
A,B,C=map(int, raw_input().split())
print A*B/2

Solution (Python):
ab,bc,ca = map(int, input().split())

print(bc * ab // 2)

Solution (Python):
a, b, c = map(int, input().split())
print(a*b//2)

Solution (Python):
from sys import stdin
n,k,c=[int(x) for x in stdin.readline().rstrip().split()]
print(int((n*k)/2))

Solution (Python):
import math
import copy




def nCast(number):
    if type(number)==str:
        return int(number)
    for idx in range(0,len(number)):
        if type(number[idx])==str:

            number[idx]=int(number[idx])
        else:
            nCast(number[idx])
    return number
    
def inputArr(w):
    l=list()
    for idx in range(0,w):
        l.append(input())
    return l
def inputArr1(w):
    l=list()
    for idx in range(0,w):
        l.append(input())
    return l

a=nCast(input().split())


def func():
    a.sort()
    return int(a[0]*a[1]*0.5)
print(func())

Solution (Python):
l=list(map(int,input().split()))
l.sort()

print(l[0]*l[1]//2)

Solution (Python):
def abc116_a():
    a = sorted(list(map(int, input().split())))
    print(a[0] * a[1] // 2)


abc116_a()

Solution (Python):
a = list(map(int, input().split()))
print((a[0] * a[1]) // 2)

Solution (Python):
import sys

def main():
    a, b, c = map(int,input().split())

    print(int(a*b/2))


if __name__ == "__main__":
        main()

Solution (Python):
a, b, c = map(int, input().split())

max_n = max(a, b, c)
min_n = min(a, b, c)

oth = a+b+c - max_n - min_n

print(int((min_n * oth) / 2))

Solution (Python):
import sys

input = sys.stdin.readline
ab, bc, ca = map(int, input().split())
print(int(ab*bc/2))

Solution (Python):
a = list(map(int, input().split()))
a.sort()
print(a[0]*a[1]//2)

Solution (Python):

ab, bc, _ = map(int, input().split())
print(int(ab * bc / 2))

Solution (Python):
a = list(map(int, input().split()))

a.sort(reverse=False)

print(int(a[0]*a[1]/2))

Solution (Python):
ab, bc, ca = map(int, input().split())
print(int(ab * bc / 2))

Solution (Python):
a=list(map(int,input().split()))
a.sort()
print(a[0]*a[1]//2)

Solution (Python):
A = [int(i) for i in input().split()]
print(A[1]*A[0]//2)

Solution (Python):
c,a,b=map(int,input().split())
print(int(a*c*0.5))

Solution (Python):
a = list(map(int, input().split()))
a.sort()
print(int(a[0]*a[1]/2))

Solution (Python):
def main():
    a, b, c = list(map(int, input().split()))
    print(int((a*b) /2))


if __name__ == '__main__':
    main()

Solution (Python):
AB, BC, CA = map(int, input().split())
print(AB * BC // 2)

Solution (Python):
a,b,c = map(int, input().split())
print(a * b // 2)

Solution (Python):
ab, bc, ca = list(map(int, input().split()))
print(ab*bc//2)

Solution (Python):
ab, bc, ca = map(int, input().split())

print(int(ab*bc/2))

Solution (Python):
a, b, c = map(int, input().split())

ans = a * b /2

print(int(ans))

Solution (Python):
AB, BC, CA = map(int, raw_input().split())

print((AB*BC)/2)

Solution (Python):

"""
Created on Sun Jan 20 20:49:15 2019

@author: Yamazaki Kenichi
"""

a,b,c = map(int,input().split())

ans= a*b//2

print(ans)

Solution (Python):
def main():
    AB, BC, CA = map(int, input().split())
    print(int(AB * BC / 2))


if __name__ == "__main__":
    main()

Solution (Python):
A, B, C = map(int,input().split())
print(A*B//2)

Solution (Python):
a, b, c = map(int, input().split())
print(int(a*b*c/max(a,b,c)/2))

Solution (Python):
A,B,C = map(int,input().split(" "))
list = [A,B,C]
sorted(list)
print(int(list[0] * list[1] / 2))

Solution (Python):
a, b, c = [int(i) for i in input().split()]
print(a*b // 2)

Solution (Python):
a,b,c = (int(i) for i in input().split())
tmp= []
tmp.append(a)
tmp.append(b)
tmp.append(c)
res = sorted(tmp)
print(res[0]*res[1]//2)

Solution (Python):
ab,bc,ca = map(int,input().split())
print(int((ab*bc)/2))

Solution (Python):
X, Y, Z = list(map(int, input().split()))
print(int(X * Y /2))

Solution (Python):
if __name__ == '__main__':
    n, w, k = map(int, input().split())
    print(int(n*w/2))

Solution (Python):
ab, bc, ca = map(int,input().split())
print(ab*bc//2)

Solution (Python):
a = list(map(int,input().split()))
a.sort()
print(a[0]*a[1]//2)

Solution (Python):
a = list(map(int, input().split()))
a.sort()
print(a[0]*a[1]//2)

Solution (Python):
a,b,c = map(int,input().split())

print(int(a*b/2))

Solution (Python):
a=list(map(int,input().split()))
a.sort()
print(int(a[0]*a[1]/2))

Solution (Python):


nums = [int(num) for num in input().split()]
print(int(nums[0]*nums[1]*0.5))

Solution (Python):
a, b, c = map(int, input().split())
print(int(a * b * 0.5))

Solution (Python):
a, b, c = [int(x) for x in input().split()]
sha = max([a, b, c])
print(int(a * b * 0.5))

Solution (Python):

ary = [int(a) for a in input().split()]

print(int(ary[0] * ary[1] / 2))

Solution (Python):
a, b, c = list(map(int, input().split()))
print(a*b//2)

Solution (Python):
a, b, c = map(int, input().split())
print(a*b//2)

Solution (Python):
s = list(map(int,input().split()))
s.sort()
print(int(s[0]*s[1]*0.5))

Solution (Python):
c, a, b = map(int, input().split())

print(int(a * c / 2))

Solution (Python):
A,B,C = map(int,input().split())
print(int(A*B/2))

Solution (Python):
ab, bc, ca = map(int, input().split())
print(ab * bc // 2)

Solution (Python):
l = list(map(int,input().split()))

l.sort()

print(l[0]*l[1]//2)

Solution (Python):
A = list(map(int, input().split()))
print(int(A[0]*A[1]/2))

Solution (Python):
a,b,c = map(int,input().split())
print(a*b//2)

Solution (Python):

a, b, c = map(int, input().split(" "))

print(a * b // 2)

Solution (Python):
A, B, C = map(int, input().split())
print(int(A*B/2))

Solution (Python):
if __name__ == "__main__":
    AB, BC, CA = tuple(map(int, input().split(" ")))
    if AB ** 2 + BC ** 2 == CA ** 2:
        print(AB * BC // 2)
    elif AB ** 2 + CA ** 2 == AB ** 2:
        print(AB * CA // 2)
    else:
        print(BC * CA // 2)

Solution (Python):
a, b, c = map(int, input().split())
print(int(a*b/2))

Solution (Python):
a,b,c=map(int,input().split())

print(int(a*b*0.5))

Solution (Python):
a, b, c = map(int,input().split())
print(a*b//2)

Solution (Python):
A,B,C=list(map(int,input().split()))
print(A*B//2)

Solution (Python):
import sys
from collections import deque
import copy
import math
def get_read_func(fileobject):
    if fileobject == None :
        return raw_input
    else:
        return fileobject.readline

def main():
    if len(sys.argv) > 1:
        f = open(sys.argv[1])
    else:
        f = None
    read_func = get_read_func(f);
    input_raw = read_func().strip().split()
    [A, B, C] = [long(input_raw[0]), long(input_raw[1]), long(input_raw[2])]
    print A * B /2

if __name__ == '__main__':
    main()

Solution (Python):
p, q, r = map(int, input().split())
print(p * q // 2)

Solution (Python):
A,B, C = (int(_) for _ in input().split())  

print(int(A * B / 2))

Solution (Python):
A,B,C = map(int,input().split())

print(int(A*B/2))

Solution (Python):
x, y, z = map(int, input().split())

print(x * y // 2)

Solution (Python):
def main():
    a, b, c = map(int, input().split())
    print(int(a * b / 2))


if __name__ == '__main__':
    main()

Solution (Python):
a, b, c = map(int,input().split())

print(int(a*b/2))

Solution (Python):
a,b,c=map(int,input().split())
print(int(b*a/2))

Solution (Python):
a=list(map(int, input().split()))
b=sorted(a)
print(int(b[0]*b[1]*0.5))

Solution (Python):
a, b, _ = input().split()

print(int(a) * int(b) // 2)

Solution (Python):
s = list(map(int, input().split()))
max_a = max(s)

ans = 1
for a in s:
    if a != max_a:
        ans *= a
print(ans // 2)

Solution (Python):
AB, BC, CA = map(int, input().split())
print((AB*BC)//2)

Solution (Python):
a,b,c = map(int,input().split())
print((a*b)//2)

Solution (Python):
a,b,c=map(int,input().split())
print(int(1/2*a*b))

Solution (Python):
A,B,C = map(int,input().split())
print(int(A*B/2))

Solution (Python):
ab, bc, ca = [int(i) for i in input().split(' ')]
print(int(ab*bc/2))

Solution (Python):
a, b, c = map(int, input().split())
print(int(a * b * (1/2)))

Solution (Python):
a, b, c = list(map(int, input().split(" ")))

print(a*b//2)

Solution (Python):


import sys


INF = float('inf')
MOD = 10 ** 9 + 7

def LI(): return [int(x) for x in sys.stdin.readline().split()]
def LS(): return sys.stdin.readline().split()
def II(): return int(sys.stdin.readline())
def SI(): return input()


A = LI()
A.sort()

print(A[0] * A[1] // 2)

Solution (Python):
""" AtCoder """

import sys
input = sys.stdin.readline

x, y, z = map(int, input().split())

print(int(x*y/2))

Solution (Python):
a, b, c = map(int, input().split(" "))
print(int(a*b/2))

Solution (Python):
a, b, c = map(int, input().split())
print(int(a*b/2))

Solution (Python):
a = list(map(int, input().split()))

a.sort()

print(a[0] * a[1] // 2)

Solution (Python):
AB,BC,CA= map(int,input().split())
print(AB*BC//2)

Solution (Python):
a, b, c = list(map(int, input().split()))
print(int(a * b / 2))

Solution (Python):
a,b,c=map(int,input().split())
print(a*b//2)

Solution (Python):
a, b, c = sorted(map(int, input().split()))
print(a*b//2)

Solution (Python):
def inpl(): return [int(i) for i in input().split()]
c, a, b = inpl()
print(int(a*c/2))

Solution (Python):
A,B,C = map(int,input().split())
print(A*B//2)

Solution (Python):
a,b,c=map(int,input().split())
print(a*b//2)

Solution (Python):
a, b, c = map(int, input().split())
a, b, c = sorted([a, b, c])

print(int(0.5 * a * b))

Solution (Python):

def LI(): return list(map(int, input().split()))
def II(): return int(input())
def LS(): return input().split()
def S(): return input()
def LIR(n): return [LI() for i in range(n)]
mod = 1000000007


a,b,c = LI()
s = a+b+c
s /= 2
ans = (s*(s-a)*(s-b)*(s-c))**(1/2)
print(int(ans))

Solution (Python):
a, b, c = list(map(int, input().split()))

print(int(a*b/2))

Solution (Python):
AB,BC,CA=list(map(int,input().split()))

print(AB*BC//2)

Solution (Python):
a,b,c = map(int, input().split())
m = max(a,b,c)
if a==m:
    print(b*c//2)
elif b==m:
    print(a*c//2)
else:
    print(a*b//2)

Solution (Python):



def main():
    ab, bc, ca = map(int, input().split())
    print(ab * bc // 2)


if __name__ == '__main__':
    main()

Solution (Python):
import sys
from itertools import product

sys.setrecursionlimit(200000)


def input():
    return sys.stdin.readline()[:-1]


def ii(t: type = int):
    return t(input())


def il(t: type = int):
    return list(map(t, input().split()))


def imi(N: int, t: type = int):
    return [ii(t) for _ in range(N)]


def iml(N: int, t: type = int):
    return [il(t) for _ in range(N)]


def solve():
    a, b, c = il()
    return a * b // 2


if __name__ == "__main__":
    print(solve())

Solution (Python):
a = list(map(int, input().split()))
a = sorted(a)

print(a[0] * a[1] // 2)

Solution (Python):
A, B, C = map(int, input().split())
print(int(A * B / 2))

Solution (Python):
a,b,c = map(int,input().split())
if max(a,b,c) == c:
    print(a*b//2)
elif max(a,b,c) == a:
    print(b*c//2)
else:
    print(a*c//2)

Solution (Python):
import numpy as np
a = list(map(int, input().split()))

print(int(a[0] * a[1] / 2))

Solution (Python):


AB, BC, CA = map(int, input().split())
print(int(AB * BC / 2))

Solution (Python):
def main():
    data = list(map(int, input().split()))
    print(int(data[0]*data[1]/2))

if __name__ == '__main__':
    main()

Solution (Python):
def IL(): return list(map(int,input().split()))
def SL(): return input().split()
def I(): return int(input())
def S(): return input()
a=IL()
a.sort()
print(int(a[0]*a[1]*0.5))

Solution (Python):
s, t, u = sorted([int(i) for i in input().split()])
print(s * t // 2)

Solution (Python):
a,b,c = map(int, input().split())
print(a*b//2)

Solution (Python):
x,y,z = map(int,input().split())
ans = int((x*y)/2)
print(ans)

Solution (Python):
a,b,c = map(int,input().split())
print(int(a*b/2))

Solution (Python):
l = list(map(int, input().split()))
l.sort()
print(l[0]*l[1]//2)

Solution (Python):
a, b, c = map(int, input().split())
print(a*b//2)

Solution (Python):
a, b, c = map(int, input().split())
print((a * b) // 2)

Solution (Python):
a, b, c = [int(_) for _ in input().split()]
print(int((a * b) / 2))

Solution (Python):
a, b, c = map(int, input().split())
print(a * b // 2)

Solution (Python):
l=list(map(int,input().split()))
l.sort()
print((l[0]*l[1])//2)

Solution (Python):
a,b,c = map(int,input().split())
print(a*b//2)

Solution (Python):
a,b,c=map(int,input().split())
print(int(a*b/2))

Solution (Python):
a,b,c=map(int,input().split())
print(a*b//2)

Solution (Python):
c, a, b = map(int, input().split())
print(a *c //2)

Solution (Python):
AB, BC, CA = map(int, input().split())
print(round(AB * BC / 2))

Solution (Python):
a,b,c=map(int,input().split())
print(int(a*b/2))

Solution (Python):


def main():
    """Function."""
    a, b, c = map(int, input().split())

    print(int(a*b*0.5))

if __name__ == "__main__":
    main()

Solution (Python):
a, b, c = map(int, input().split(' '))
ret = a * b // 2
print(ret)

Solution (Python):
a,b,c=sorted(map(int,input().split()))
print(a*b//2)

Solution (Python):
A, B, C = map(int, input().split())
print(A * B // 2)

Solution (Python):
a,b,c = map(int, input().split())

print(a*b//2)

Solution (Python):
A = list(map(int,input().split()))
print(int(A[0] * A[1] / 2))

Solution (Python):
a = list(map(int,input().split()))
a.sort()
print(int(a[0]*a[1]/2))

Solution (Python):
a = sorted(list(map(int, input().split())))
print(a[0] * a[1] // 2)

Solution (Python):
AB, BC, CA = map(int, input().split())

print(int(AB * BC / 2))

Solution (Python):
a,b,c=map(int,input().split())
print(a*b//2)

Solution (Python):
a = list(map(int, input().split()))
print(a[0] * a[1] // 2)

Solution (Python):
from statistics import mean, median,variance,stdev
import sys
import math
import fractions

def j(q):
    if q==1: print("YES")
    else:print("NO")
    exit(0)


def ct(x,y):
    if (x>y):print("")
    elif (x<y): print("")
    else: print("")

def ip():
    return int(input())



x,y,z = (int(i) for i in input().split())    








print(x*y//2)

Solution (Python):
a,b,c = map(int,input().split())
print((a*b)//2)

Solution (Python):
a = list(map(int, input().split()))
print(int(a[0]*a[1]/2))

Solution (Python):
X = list(map(int,input().split()))
X.sort()
print(X[0]*X[1]//2)

Solution (Python):
a,b,c = map(int,input().split( ))
print(a*b//2)

Solution (Python):
ab, bc, ca = [int(_) for _ in input().split()]

print(ab * bc // 2)

Solution (Python):
a, b, c = map(int, input().split())
print(a*b//2)

Solution (Python):
a, b, c = map(int, input().split())

print(a * b // 2)

Solution (Python):
a, b, c = map(int, input().split())
print(a * b * c // max(a, b, c) // 2)

Solution (Python):
(a, b, c) = list(map(int, input().split()))


print(a*b//2)

Solution (Python):
a, b, c = map(int, input().split())
print(a * b // 2)

Solution (Python):
a, b, c = map(int, input().split())
print(a * b // 2)

Solution (Python):
AB, BC, CA = map(int, input().split())
print(AB * BC // 2)

Solution (Python):
a,b,c = map(int, input().split())
print(a * b // 2)

Solution (Python):
import numpy as np
import sys
input = sys.stdin.readline
def IL(): return list(map(int,input().split()))
def SL(): return input().split()
def I(): return int(sys.stdin.readline())
def S(): return input()

a,b,c = IL()

print(a*b//2)

Solution (Python):
a = sorted(list(map(int,input().split())))
print((a[1]*a[0])//2)

Solution (Python):
A, B, C = map(int, input().split())

print(A*B//2)

Solution (Python):
A = list( map( int, input().split()))
print( A[0]*A[1]//2)

Solution (Python):
a,b,_=map(int,input().split())
print(a*b//2)

Solution (Python):

def inpl(): return list(map(int, input().split()))
A, B, C = inpl()

print(A*B//2)

Solution (Python):
a, b, c = [int(_) for _ in input().split()]

print(a * b // 2)

Solution (Python):
AB, BC, CA = [int(elem) for elem in input().split()]
print(AB * BC // 2)

Solution (Python):
a = [int(i) for i in input().split()]
a.sort()
print(a[0] * a[1] // 2)

Solution (Python):

a, b, c = [int(i) for i in input().split()]

print(int(a*b/2))

Solution (Python):
*L, = map(int, input().split())
L.sort()
print(L[0]*L[1]//2)

Solution (Python):
a, b, c = list(map(int, input().split()))

print(int(a*b/2))

Solution (Python):
a = sorted(list(map(int,input().split())))
print(a[0]*a[1]//2)

Solution (Python):
a,b,c = map(int, input().split())
if a > b and a > c:print(b * c // 2)
if b > a and b > c:print(a * c // 2)
if c > a and c > b:print(a * b // 2)

Solution (Python):
a, b, c = map(int, input().split())
print(a * b //2 )

Solution (Python):
ab , bc, ca = map(int, input().split())
print((ab * bc) //2)

Solution (Python):
import sys
import math
import collections
import itertools
import array
import inspect


sys.setrecursionlimit(1000000)



def chkprint(*args):
    names = {
        id(v): k
        for k, v in inspect.currentframe().f_back.f_locals.items()
    }
    print(', '.join(
        names.get(id(arg), '???') + ' = ' + repr(arg) for arg in args))



def to_bin(x):
    return bin(x)[2:]


def li_input():
    return [int(_) for _ in input().split()]


def gcd(n, m):
    if n % m == 0:
        return m
    else:
        return gcd(m, n % m)


def gcd_list(L):
    v = L[0]

    for i in range(1, len(L)):
        v = gcd(v, L[i])

    return v


def lcm(n, m):
    return (n * m) // gcd(n, m)


def lcm_list(L):
    v = L[0]

    for i in range(1, len(L)):
        v = lcm(v, L[i])

    return v



def wfs_d(D, N, K):
    """
    D: 隣接行列(距離付き)
    N: ノード数
    K: 始点ノード
    """

    dfk = [-1] * (N + 1)
    dfk[K] = 0

    cps = [(K, 0)]
    r = [False] * (N + 1)
    r[K] = True
    while len(cps) != 0:
        n_cps = []
        for cp, cd in cps:
            for i, dfcp in enumerate(D[cp]):
                if dfcp != -1 and not r[i]:
                    dfk[i] = cd + dfcp
                    n_cps.append((i, cd + dfcp))
                    r[i] = True

        cps = n_cps[:]

    return dfk



def dfs_d(v, pre, dist):
    """
    v:  現在のノード
    pre: １つ前のノード
    dist: 現在の距離

    以下は別途用意する
    D: 隣接リスト(行列ではない)
    D_dfs_d: dfs_d関数で用いる，始点ノードから見た距離リスト
    """

    global D
    global D_dfs_d

    D_dfs_d[v] = dist

    for next_v, d in D[v]:
        if next_v != pre:
            dfs_d(next_v, v, dist + d)

    return


def sigma(N):
    ans = 0
    for i in range(1, N + 1):
        ans += i
    return ans


def comb(n, r):
    if n - r < r: r = n - r
    if r == 0: return 1
    if r == 1: return n

    numerator = [n - r + k + 1 for k in range(r)]
    denominator = [k + 1 for k in range(r)]

    for p in range(2, r + 1):
        pivot = denominator[p - 1]
        if pivot > 1:
            offset = (n - r) % p
            for k in range(p - 1, r, p):
                numerator[k - offset] /= pivot
                denominator[k] /= pivot

    result = 1
    for k in range(r):
        if numerator[k] > 1:
            result *= int(numerator[k])

    return result

def bisearch(L, target):
    low = 0
    high = len(L) - 1
    
    while low <= high:
        mid = (low + high) // 2
        guess = L[mid]
        if guess == target:
            return True
        elif guess < target:
            low = mid + 1
        elif guess > target:
            high = mid - 1
    if guess != target:
        return False



dp = None


def main():
    a, b, c = li_input()
    print(a * b // 2)


main()

Solution (Python):
a,b,c=map(int,input().split())

print(a*b//2)

Solution (Python):
a,b,c=[int(x) for x in input().split()]
print(a*b//2)

Solution (Python):
a = sorted([int(x) for x in input().split()])
print(a[0]*a[1]//2)

Solution (Python):




X,Y,Z = map(int,input().split())  

print(int(X*Y/2))

Solution (Python):
a,b,c=map(int,input().split())
print(a*b//2)

Solution (Python):
a,b,c = (int(i) for i in input().split())
print(int(a*b/2))

Solution (Python):
import collections
import math
import re
import numpy
def ai():return input()
def a():return int(input())
def ma():return map(int, input().split())
def ms():return map(str, input().split())
def lma():return list(map(int, input().split()))
def lms():return list(map(str, input().split()))
def say(i):return print("Yes" if i == 0 else "No")
def Say(i):return print("YES" if i == 0 else "NO")
k= []
l = []
f = 0
s=0
c=0
e =1

a,b,c=ma()
print((a*b)//2)

Solution (Python):
A,B,_ = map(int, raw_input().split())
print A*B/2

Solution (Python):
AB, BC, CA = map(int, input().split())
print(AB * BC//2)

Solution (Python):
a,b,c=map(int,raw_input().split())

print a*b/2

Solution (Python):
a, b, c = list(map(int, input().split()))
print(int(a * b / 2))

Solution (Python):
def A():
    ab, bc, ca = map(int, input().split())
    print(int(bc * ab / 2))
A()

Solution (Python):
a, b, c = map(int, input().split())

print(a*b//2)

Solution (Python):
a,b,c = map(int,input().split())
print(a * b//2)

Solution (Python):
a,b,c = map(int,input().split())
print(b * a // 2)