#include <bits/stdc++.h>
using namespace std;
int pas, x, y;
bool l[50][50];
void find(int v, int u, int ans) {
  if (ans < pas) return;
  if (u >= y) {
    find(v + 1, 0, ans);
    return;
  }
  if (v >= x) {
    pas = max(pas, ans);
    return;
  }
  if (l[v][u] || v > 0 && l[v - 1][u] || u > 0 && l[v][u - 1]) {
    find(v, u + 1, ans);
    return;
  }
  if (u < y - 1) {
    bool lx = l[v][u + 1];
    l[v][u + 1] = true;
    find(v, u + 1, ans - (lx == false));
    l[v][u + 1] = lx;
  }
  if (v < x - 1) {
    bool lx = l[v + 1][u];
    l[v + 1][u] = true;
    find(v, u + 1, ans - (lx == false));
    l[v + 1][u] = lx;
  }
  bool lx = l[v][u];
  l[v][u] = true;
  find(v, u + 1, ans - (lx == false));
  l[v][u] = lx;
}
int main() {
  scanf("%d%d", &x, &y);
  find(0, 0, x * y);
  printf("%d\n", pas);
  return 0;
}
