/*
TASK: rtri
LANG: C++
*/

#include <iostream>
using namespace std;

int n, m;
long long all;

struct l
{
       int x, r;
} R[20] = { 3, 10, 4, 10, 5, 26, 12, 26, 6, 20, 8, 20};

void add(int i)
{
    for (int p = R[i].r; p <= n && p <= (R[i].r * m) / R[i].x; p += R[i].r)
     all += 4*(n - p + 1)*(m - (R[i].x*p)/R[i].r + 1 );
       
    for (int p = R[i].r; p <= m && p <= (R[i].r * n) / R[i].x; p += R[i].r)
     all += 4*(m - p + 1)*(n - (R[i].x*p)/R[i].r + 1 ); 
}  
     
int main()
{
    cin >> m >> n;
    //if (m > n) { int t = m; m = n; n = t; }
    
    all =  m*(m+1)*n*(n+1);
    
    for (int p = 2; p <= n && p <= 2*m; p += 2)
     all += 2*(n - p + 1)*(m - p/2 + 1 );
    
    for (int p = 2; p <= m && p <= 2*n; p += 2)
     all += 2*(m - p + 1)*(n - p/2 + 1 );
    
    for (int i = 0; i < 6; i++)
     add(i);
      
    cout << all << endl;
    //system("pause");
    return 0;
}
