/*
TASK:rtri
LANG:C++
*/
#include <iostream>
using namespace std;
struct point 
{
       int x,y;};
point p[1000];
int skalar(int a,int b,int c)
{
    int dx1=p[b].x-p[a].x;
    int dx2=p[c].x-p[a].x;
    int dy1=p[b].y-p[a].y;
    int dy2=p[c].y-p[a].y;
    return dx1*dx2+dy1*dy2;
}
int cnt=0,n,m;
int main()
{
    cin>>n>>m;
    for(int i=0;i<=n;i++)
            for(int j=0;j<=m;j++)
            {
                    cnt++;
                    p[cnt].x=i;
                    p[cnt].y=j;
            }
            
    for(int i=1;i<=cnt;i++)
        for(int j=i+1;j<=cnt;j++)
            for(int k=j+1;k<=cnt;k++)
                if(skalar(i,j,k)==0 || skalar(j,i,k)==0 || skalar(k,i,j)==0) cnt++;
                
    cout<<cnt<<endl;
            
}
