/*
TASK:rtri
LANG:C++
*/
# include <stdio.h>
# include <stdlib.h>
# define MAXN (1<<10)

int n,m,p,cnt;
struct points {
       int x,y;
} data[MAXN];

void read() {
    p = 1; 
    scanf("%d %d", &n,&m);
    for(int i = 1; i <= n+1; i++) {
       for(int j = 1; j <= m+1; j++) {
             data[p].x = i;
             data[p++].y = j;        
       }        
    }
    //printf("%d\n", p);      
}

int dist(int x1,int y1,int x2,int y2) {
    return (abs(x1-x2)*abs(x1-x2)+abs(y1-y2)*abs(y1-y2));
}

void calc(int a,int b,int c) {
     int aa = dist(data[a].x,data[a].y,data[b].x,data[b].y);
     int bb = dist(data[b].x,data[b].y,data[c].x,data[c].y);
     int cc = dist(data[a].x,data[a].y,data[c].x,data[c].y);    
     if(aa + bb == cc ||aa + cc == bb || bb + cc == aa) cnt++;
}

void solve() {
    for(int i = 1; i < p-2; i++) {
         for(int j = i+1; j < p-1;j++) {
             for(int k = j+1; k < p; k++) {
                  calc(i,j,k);      
             }        
         }       
    }
    printf("%d\n", cnt);      
}
 
int main() {
    read();   
    solve();
    return 0;
}
