#include   <iostream>
#include    <fstream>
#include    <sstream>
#include    <iomanip>
#include    <utility>
#include     <vector>
#include       <list>
#include     <string>
#include      <stack>
#include      <queue>
#include      <deque>
#include        <set>
#include        <map>
#include  <algorithm>
#include <functional>
#include    <numeric>
#include     <bitset>
#include    <complex>
#include     <cstdio>
#include    <cstring>
#include      <cmath>
#include     <math.h>
#include   <string.h>
#include    <cstdlib>
#include      <ctime>
#include    <climits>
/*
#pragma GCC optimize(3)
#pragma GCC target("avx")
#pragma GCC optimize("Ofast")
#pragma GCC optimize("inline")
#pragma GCC optimize("-fgcse")
#pragma GCC optimize("-fgcse-lm")
#pragma GCC optimize("-fipa-sra")
#pragma GCC optimize("-ftree-pre")
#pragma GCC optimize("-ftree-vrp")
#pragma GCC optimize("-fpeephole2")
#pragma GCC optimize("-ffast-math")
#pragma GCC optimize("-fsched-spec")
#pragma GCC optimize("unroll-loops")
#pragma GCC optimize("-falign-jumps")
#pragma GCC optimize("-falign-loops")
#pragma GCC optimize("-falign-labels")
#pragma GCC optimize("-fdevirtualize")
#pragma GCC optimize("-fcaller-saves")
#pragma GCC optimize("-fcrossjumping")
#pragma GCC optimize("-fthread-jumps")
#pragma GCC optimize("-funroll-loops")
#pragma GCC optimize("-fwhole-program")
#pragma GCC optimize("-freorder-blocks")
#pragma GCC optimize("-fschedule-insns")
#pragma GCC optimize("inline-functions")
#pragma GCC optimize("-ftree-tail-merge")
#pragma GCC optimize("-fschedule-insns2")
#pragma GCC optimize("-fstrict-aliasing")
#pragma GCC optimize("-fstrict-overflow")
#pragma GCC optimize("-falign-functions")
#pragma GCC optimize("-fcse-skip-blocks")
#pragma GCC optimize("-fcse-follow-jumps")
#pragma GCC optimize("-fsched-interblock")
#pragma GCC optimize("-fpartial-inlining")
#pragma GCC optimize("no-stack-protector")
#pragma GCC optimize("-freorder-functions")
#pragma GCC optimize("-findirect-inlining")
#pragma GCC optimize("-fhoist-adjacent-loads")
#pragma GCC optimize("-frerun-cse-after-loop")
#pragma GCC optimize("inline-small-functions")
#pragma GCC optimize("-finline-small-functions")
#pragma GCC optimize("-ftree-switch-conversion")
#pragma GCC optimize("-foptimize-sibling-calls")
#pragma GCC optimize("-fexpensive-optimizations")
#pragma GCC optimize("-funsafe-loop-optimizations")
#pragma GCC optimize("inline-functions-called-once")
#pragma GCC optimize("-fdelete-null-pointer-checks")
*/
using namespace std;
#define ll long long
#define pb push_back
#define mp make_pair
#define f first
#define s second
#define ones __builtin_popcount
#define gcd __gcd
#define INF 1000000000
#define y1 yy1
const int N = 5e5 + 100;
const ll MOD = 1e9 + 7;

int gcd(int a, int b){while(b){a%=b;swap(a,b);}return a;}
ll binpow(ll a, ll n){ll b=1;while(n!=0){if(n&1)b=b*a%MOD;a=a*a%MOD;n>>=1;}return b;}


int n,m;
ll ans;
int main(){
    
    ios_base::sync_with_stdio(0);//
    cin.tie(0);///
    cout.tie(0);////////
    cin>>n>>m;
    if(n>m){
        swap(n,m);
    }
    if(n==1 || m==1){
        m=max(n,m);
        for(int i=1;i<m;i++){
            ans+=m-i;
        }
        ans+=m;
        ans+=m-1;
        cout<<ans;
        return 0;
    }
    ans+=(m*n);
    ans+=((m-1)*n);
    for(int i=0;i<m;i++){
        ans+=(n*(m-i));
        //cout<<n*(m-i)<<'\n';
    }
    cout<<ans;
    return 0;
}/