#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
#define rep(i,a,b) for(int i=a;i<b;i++)
#define per(i,a,b) for(int i=b-1;i>=a;i--)
/*
考虑加法原理,分成三类(没有重复)
行;列;对角线
1.行: A(n,m)=n*m(m-1) [排列]
2.列: B(n,m)=A(m,n)=m*n*(n-1) [排列]
3.对角线: 考虑D(n,m) 考虑(n<=m),先考虑‘/'对角线
1,2,3...n,n,n(m-n+1个)...3,2,1
再考虑从 sigma(i*(i-1))从[1,n-1]求和,最后化简
得到(n-1)*n*(2*n-1)/3-n*(n-1)
牢记:
sigma(i^2)[1,n]=n*(n+1)*(2*n+1)/6
*/
ll A(ll n,ll m){
return n*m*(m-1);
}
ll B(ll n,ll m){
return m*n*(n-1);
}
ll D(ll n,ll m){
return (n-1)*n*(2*n-1)/3-n*(n-1)+(m-n+1)*n*(n-1);
}
int main(){
ll n,m;
while(scanf("%lld %lld",&n,&m)==2&&n){
if(n>m)swap(n,m);
ll ans=A(n,m)+B(n,m)+2ll*D(n,m);
printf("%lld\n",ans);
}
return 0;
}