#include <bits/stdc++.h>
using namespace std;
int co[1010][1010];
int cnt[2];
int n, m;
void dfs(int x, int y, int c) {
  if (x < 0 || y < 0 || x >= n || y >= m) return;
  if (co[x][y] != -1) {
    return;
  }
  co[x][y] = c;
  cnt[c]++;
  for (int i = -1; i <= 1; i += 2)
    for (int j = -1; j <= 1; j += 2) {
      dfs(x + i, y + 2 * j, 1 - c);
      dfs(x + 2 * j, y + i, 1 - c);
    }
  return;
}
int main() {
  scanf("%d", &n), scanf("%d", &m);
  memset(co, -1, sizeof co);
  int ans = 0;
  for (int i = 0; i < n; i++)
    for (int j = 0; j < m; j++)
      if (co[i][j] == -1) {
        cnt[0] = cnt[1] = 0;
        dfs(i, j, 0);
        ans += max(cnt[0], cnt[1]);
      }
  printf("%d\n", ans);
}
