#include <bits/stdc++.h>
using namespace std;
int a[50][1 << 14];
int tt[1 << 14];
int cd[1 << 14];
int main() {
  int n, m;
  cin >> n >> m;
  if (n < m) swap(n, m);
  for (int i = 0; i < 50; ++i)
    for (int j = 0; j < (1 << 14); ++j) a[i][j] = 100500;
  int r = (1 << m) - 1;
  int r2 = (1 << m << m) - 1;
  a[0][r] = 0;
  for (int j = 0; j <= r; ++j) {
    tt[j] = 0;
    cd[j] = 0;
    for (int k = 0; k < m; ++k)
      if (j & (1 << k)) {
        tt[j] |= (1 << k) | (1 << k >> 1) | (1 << k << 1);
        ++cd[j];
      }
    tt[j] &= r;
  }
  for (int i = 0; i <= n; ++i) {
    for (int j = 0; j <= r2; ++j) {
      if (a[i][j] >= 100500) continue;
      for (int k = 0; k <= r; ++k) {
        if ((j & r | k) != r) continue;
        int np = (j >> m) | tt[k] | (k << m);
        a[i + 1][np] = min(a[i + 1][np], a[i][j] + cd[k]);
      }
    }
  }
  int rez = n * m;
  for (int i = 0; i <= r2; ++i) {
    if ((i & r) != r) continue;
    rez = min(rez, a[n][i]);
  }
  cout << n * m - rez << endl;
  return 0;
}
