??????
????????????nxm?????????????????????????????????????????????????????????????????????????????????4x4?????????????????????????????????
???????????????????????????????????????
????????????
???????????????????????????????????????????????????m???n???
????????????
???????????????????????????????????????????????????
????????????
2 2
????????????
76
????????????
1<=m,n<=1000
??????
???????????????????????????????????????\(C_{n*m}^{3}\)?????????????????????
???????????????????????????????????????\(n * C_{m}^{3}\)???\(m * C_{n}^{3}\)
?????????????????????
???????????????????????????????????????\(n \leq 1000\)?????????\(n^2\)
????????????????????????????????????????????????????????????\(i\)??????????????????\(j\)
????????????????????????\(2*(n - i)*(m-j)\)???????????????????????????????????????
?????????????????????$ = gcd(i,j) + 1$
?????????????????????\(gcd(i,j)-1\)
????????????????????????????????????=\(2*(n-i)*(m-j)*(gcd(i,j) - 1)\)
????????????
#include<iostream>
#include<cstdio>
#include<algorithm>
#define LL long long int
using namespace std;
LL n,m,ans;
LL C(LL x){return x * (x - 1) * (x - 2) / 2 / 3;}
LL gcd(LL a,LL b){return b ? gcd(b,a % b) : a;}
int main(){
cin>>n>>m; n++; m++;
if (n > m) swap(n,m);
ans = C(n * m) - C(m) * n - C(n) * m;
for (int i = 2; i < n; i++)
for (int j = 2; j < m; j++)
ans -= 2 * (gcd(i,j) - 1) * (n - i) * (m - j);
cout<<ans<<endl;
return 0;
}