#include <bits/stdc++.h>
using namespace std;

int rlaev(int n, int m) {
	if (n == 1 && m == 1) return 0;
	return min(m, n)+(min(m, n)-2)*(min(m, n)-1)/2+rlaev(max(m, n)-1, min(m, n))+m*n;
}

int main() {
	int h, w;
	cin >> h >> w;
	cout << h*w+rlaev(h, w) - 1;
}
/*
	сигмарома вместе с сигмасетом
	шли по задача L. Места в метро
	прилепили на себя бинарность по приколу
	а на встречу им влачился слишком глубой обход в глубилу
	BDSF что с тобой случилось
	я член
	маморда
	*//*
	сигмарома вместе с сигмасетом
	шли по задача L. Места в метро
	прилепили на себя бинарность по приколу
	а на встречу им влачился слишком глубой обход в глубилу
	BDSF что с тобой случилось
	я член
	маморда
	*/
