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-----
3 4 5

-----Sample Output-----
6


This triangle has an area of 6.

Difficulty: introductory

Starter code:

Solutions:
S_list = list(map(int,input().split()))
print((int(S_list[0] * S_list[1] / 2)))


L = list(map(int, input().split()))
sortL = sorted(L)
ans = L[0] * L[1] /2
print(int(ans))

# import numpy as np
# import math

# from scipy.special import perm : perm(n, r, exact=True)
# from scipy.special import comb : comb(n, r, exact=True)

# import itertools
# for v in itertools.combinations(L, n):M.append(list(v))

# from numba import njit
# @njit('f8(i8,i8,i8,i8,f8[:,:,:])', cache=True)


""" Definitions  """

def lcm(a, b):
    return a*b//math.gcd(a, b)

MOD = 10**9+7

# ============================================================

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

print((a*b//2))


length1, length2, length3 = map(int, input().split())
area = length1 * length2 / 2
print(int(area))

three = list(map(int, input().split()))
three.sort()

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


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

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

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

print((a * b // 2))


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

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

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

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

#!/usr/bin/env python3

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


def __starting_point():
    main()

__starting_point()

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

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


L_ab, L_bc, L_ca = map(int, input().split())

print(L_ab * L_bc // 2)

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

area = int((AB * BC) / 2)

print(area)

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

d = max(a,b,c)

res = 1

if a !=d:
    res *=a

if b !=d:
    res *=b

if c !=d:
    res *=c
    
print(res//2)

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


def mapt(fn, *args):
    return tuple(map(fn, *args))


def Input():
    return mapt(int, input().split(" "))


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

main()

# 116a

def atc_116a(input_value: str) -> int:
    tri_length = [int(ai) for ai in input_value.split(" ")]
    tri_length.sort()
    return int((tri_length[0] * tri_length[1] / 2))

input_value = input()
print(atc_116a(input_value))

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

print(AB * BC // 2)

# 116a

def atc_116a(input_value: str) -> int:
    tri_length = [int(ai) for ai in input_value.split(" ")]
    tri_length.sort()
    return int((tri_length[0] * tri_length[1] / 2))

input_value = input()
print((atc_116a(input_value)))


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

length = list(map(int, input().split()))
length.sort()
print((int(length[0] * length[1] / 2)))


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

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

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

print(AB * BC // 2)

# 数値の取得
bottom,height,hypotenuse = map(int,input().split())

# 面積を出力
area = int(bottom * height / 2)
print(area)

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

ab, bc, ca = list(map(int, input().split()))

area = (ab * bc) // 2

print(area)


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


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

def __starting_point():
    main()
__starting_point()

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

print(((AB * BC) // 2))


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

x = list(map(int, input().split()))
print(x[0]*x[1]//2)

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

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

answer = int((AB * BC) / 2)
print(answer)

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

# A - Right Triangle

#  AB BC CA
AB, BC, CD = map(int, input().split())

print(int(AB * BC / 2))



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


i = (AB * BC) // 2
print(i)


# A - Right Triangle
# https://atcoder.jp/contests/abc116/tasks/abc116_a

ab, bc, ca = list(map(int, input().split()))

result = int(ab * bc * 0.5)
print(result)


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

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

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


num, num1, num2 = input("").split()
num = int(num)
num1 = int(num1)

print(int(num*num1/2))

edges = list(map(int, input().split()))
edges.sort()
print((edges[0] * edges[1] // 2))


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

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

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

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

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

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

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

print(BC * AB // 2)

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


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

print(a*b//2)


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

print(int(a*b/2))

x, y, z = list(map(int,input().split()))
print((x*y//2))


a = input().split()
print(int(int(a[0])*int(a[1])/2))

ab, bc, ca = (int(n) for n in input().split())
print(ab * bc // 2)

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

print(AB*BC//2)

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

l=[int(x) for x in input().split()]
l.sort()
print((l[0]*l[1])//2)

s = list(map(int, input().split()))
s.sort()
print(s[0] * s[1] // 2)

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

import math
import collections
from itertools import product

ii = lambda : int(input())
mi = lambda : map(int,input().split())
li = lambda : list(map(int,input().split()))

l = li()
l.sort()
print(l[0]*l[1]//2)

ab, bc, ca =list(map(int,input().split()))

print(((ab * bc)//2))


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

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

print(int(AB * BC / 2))

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

if a > b and a > c:
    print(int(b*c/2))
elif b > a and b > c:
    print(int(a*c/2))
else:
    print(int(a*b/2))

from math import sqrt
a, b, c = map(int, input().split())
s = (a + b + c) / 2
ans = sqrt(s * (s - a) * (s - b) * (s - c))
print(int(ans))

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

print((ab * bc )//2)

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

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

print(AB*BC//2)

#from statistics import median
#import collections
#aa = collections.Counter(a) # list to list || .most_common(2)で最大の2個とりだせるお a[0][0]
from math import gcd
from itertools import combinations,permutations,accumulate, product # (string,3) 3回
#from collections import deque
from collections import deque,defaultdict,Counter
import decimal
import re
import math
import bisect
import heapq
#
#
#
# pythonで無理なときは、pypyでやると正解するかも！！
#
#
# my_round_int = lambda x:np.round((x*2 + 1)//2)
# 四捨五入g
#
# インデックス系
# int min_y = max(0, i - 2), max_y = min(h - 1, i + 2);
# int min_x = max(0, j - 2), max_x = min(w - 1, j + 2);
#
#
import sys
sys.setrecursionlimit(10000000)
mod = 10**9 + 7
#mod = 9982443453
#mod = 998244353
INF = float('inf')
from sys import stdin
readline = stdin.readline
def readInts():
  return list(map(int,readline().split()))
def readTuples():
    return tuple(map(int,readline().split()))
def I():
    return int(readline())
a,b,c = readInts()
print(((a*b)//2))


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

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

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

A, B, _ = map(int, input().split())
print(A * B // 2)

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

print(a * b // 2)

L = list(map(int, input().split()))

L.sort()
print((L[0] * L[1] // 2))


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

ma = max(a,b,c)
if(a==ma):
    ans = b*c
elif(b==ma):
    ans = a*c
else:
    ans = a*b

print(ans//2)

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

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

print(int(AB*BC/2))

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


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

print((AB * BC) // 2)

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

print(ab * bc // 2)

# ABC116
# A Right Triangle
L = list(map(int, input().split()))
L = sorted(L)
print((int(L[0]*L[1]/2)))


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

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


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

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

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

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

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

x,y,z=list(map(int,input().split()))
print(x*y//2)

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

triangle = a * b // 2

print(triangle)

AB, BC, CA = list(map(int, input().split()))
if (1 <= AB & AB <= 100) & (1 <= BC & BC <= 100) & (1 <= CA & CA <= 100):
    S = int(AB * BC / 2)
    print(S)


# 直角三角形ABCがあります。∠ABC=90°です。三角形ABCの三辺の長さである|AB|,|BC|,|CA|が与えられるので、直角三角形ABCの面積を求めて下さい。
# ただし、三角形ABCの面積は整数となることが保証されています。

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

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

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

area = AB * BC // 2
print(area)

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

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