#include <bits/stdc++.h>
using namespace std;
int n, m, x, y, i, j, mini;
int calc(int l, int r, int x1, int y1) {
  int nr = 0;
  for (i = 1; i <= l; i++)
    for (j = 1; j <= r; j++) {
      x = i - x1;
      y = j - y1;
      if ((x + 2 * y + 2) % 5 == 0) nr++;
    }
  i = 0;
  for (j = 1; j <= r; j++) {
    x = i - x1;
    y = j - y1;
    if ((x + 2 * y + 2) % 5 == 0) nr++;
  }
  i = l + 1;
  for (j = 1; j <= r; j++) {
    x = i - x1;
    y = j - y1;
    if ((x + 2 * y + 2) % 5 == 0) nr++;
  }
  j = 0;
  for (i = 1; i <= l; i++) {
    x = i - x1;
    y = j - y1;
    if ((x + 2 * y + 2) % 5 == 0) nr++;
  }
  j = r + 1;
  for (i = 1; i <= l; i++) {
    x = i - x1;
    y = j - y1;
    if ((x + 2 * y + 2) % 5 == 0) nr++;
  }
  return nr;
}
int main() {
  cin >> n >> m;
  mini = n * m;
  if (n > m) swap(n, m);
  if (n == 1) {
    cout << m - (m - 1) / 3 - 1;
    return 0;
  }
  if (n == 2) {
    cout << 2 * m - (m / 2 + 1);
    return 0;
  }
  if (n == 3) {
    cout << 2 * m + (m - 1) / 4;
    return 0;
  }
  if (n == 4) {
    mini = m + 1 - m / 7 + m / 9 - m / 10;
  }
  if (n >= 5) {
    mini = m + 1 + ((m + 4) / 6) + 2 * (n - 5);
  }
  mini = min(mini, calc(n, m, 1, 1));
  mini = min(mini, calc(n, m, 1, 0));
  mini = min(mini, calc(n, m, 0, 1));
  mini = min(mini, calc(n, m, 1, 2));
  mini = min(mini, calc(n, m, 2, 1));
  mini = min(mini, calc(m, n, 1, 1));
  mini = min(mini, calc(m, n, 1, 0));
  mini = min(mini, calc(m, n, 0, 1));
  mini = min(mini, calc(m, n, 1, 2));
  mini = min(mini, calc(m, n, 2, 1));
  cout << n * m - mini;
  return 0;
}
