#include <iostream>
#include <vector>
#include <cmath>

using namespace std;

long long areaObjects(long long n, long long m) {
    if (n <= 0 || m <= 0) {
        return 0;
    }
    vector<long long> a;
    long long s = n * m;
    a.push_back(s);
    long long i = 1;
    long long k = 0;
    long long t1;
    long long t2;
    while (i - k != 0) {
        for (long long j = k; j < i; j++) {
            if (a[j] > 1) {
                t1 = ceil(static_cast<double>(a[j]) / 2);
                t2 = floor(static_cast<double>(a[j]) / 2);
                a.push_back(t1);
                a.push_back(t2);
                //  cout << t1 << " " << t2 << " ";
            }
        }
        k = i;
        i = a.size();
    }
    long long sum = 0;
    for (long long j = 0; j < a.size(); j++) {
        sum = sum + a[j];
    }
    
    return sum;
}

int main() {
    long long n, m;
    cin >> n >> m;
    long long result = areaObjects(n, m);
    cout << result << endl;
    return 0;
}