/*
TASK:rtri
LANG:C
*/
#include<stdio.h>

int NOD(int b, int a)
{
  while(a!=b)
  {
    if(a>b) a-=b;
       else b-=a;
  }
  return a;
}

int main()
{
  int m, n, i, j, k, i1, k1, nod, t;
  unsigned long br=0, p;
  scanf("%d", &m);
  scanf("%d", &n);
  for(i=1; i<=m; i++)
  {
    for(j=i; j<=n; j++)
    {
      p=4;
      for(k=1; k<j/2; k++)
      {
	nod=NOD(i, k);
	i1=i/nod;
	k1=k/nod;
	t=1;
	while(i1<j)
	{
	  i1*=t;
	  k1*=t;
	  if(k+i1==j && k1<i) p+=4;
	  t++;
	}
      }
      if(i*2==j) p+=2;
      if(i==j) p*=(m-i+1)*(n-i+1);
	  else if(j<=m) p*=(m-i+1)*(n-j+1) + (m-j+1)*(n-i+1);
		   else p*=(m-i+1)*(n-j+1);
      br+=p;
    }
  }
  printf("%lu\n", br);
  return 0;
}
