#include <bits/stdc++.h>
using namespace std;
const int MOD = 1e9 + 7;
const int MAX = 1010;
int n, m;
set<pair<int, int> > s;
bool vis[1010][1010];
int c = 0;
void dfs(int p, int q) {
  c++;
  vis[p][q] = 1;
  for (int i = -2, _n = (3); i < _n; ++i) {
    for (int j = -2, _n = (3); j < _n; ++j) {
      if (i * i + j * j == 5) {
        int x = p + i;
        int y = q + j;
        if (x < 0 || x >= m || y < 0 || y >= n) continue;
        if (!vis[x][y]) {
          dfs(x, y);
        }
      }
    }
  }
}
int main() {
  ios_base::sync_with_stdio(0);
  cin >> n >> m;
  if (m > n) swap(m, n);
  int ans = 0;
  for (int i = 0, _n = (m); i < _n; ++i) {
    for (int j = 0, _n = (n); j < _n; ++j) {
      if (!vis[i][j]) {
        c = 0;
        dfs(i, j);
        ans += c - c / 2;
      }
    }
  }
  cout << ans << endl;
  return 0;
}
