#include <bits/stdc++.h>
using namespace std;
long long power(long long b, long long e, long long MOD) {
  if (b == 0 && e == 0) return 1;
  if (b == 0 && e > 1) return 0;
  if (b > 0 && e == 0) return 1;
  long long r = 1;
  while (e) {
    if (e & 1) {
      r = r * b;
      r %= MOD;
    }
    e >>= 1;
    b = b * b;
    b %= MOD;
  }
  return r;
}
long long gcd(long long a, long long b) {
  if (b == 0)
    return a;
  else
    return gcd(b, a % b);
}
const int INF = INT_MAX;
const int MAX = 100005;
const int MOD = 1e9 + 7;
int memo[25][25];
int foo(int x, int y) {
  if (x <= 0 || y <= 0) return 0;
  if (x == 1) return y / 2;
  if (x == 2)
    return y;
  else if (y == 2)
    return x;
  if (memo[x][y]) return memo[x][y];
  int ans = 0;
  ans = y + foo(x - 2, y);
  memo[x][y] = ans;
  return ans;
}
int main() {
  memset(memo, 0, sizeof(memo));
  ;
  int m, n;
  scanf("%d", &m);
  scanf("%d", &n);
  if (m < n) swap(n, m);
  cout << foo(m, n) << endl;
  return 0;
}
