public class Euler147 {
    static long solve(int width, int height) {
        int n = Math.min(width, height), m = Math.max(width, height);
        long answer = (long) (n * (n + 1) * (n + 2) / 6) * (long) (m * (m + 1) * (m + 2) / 6);
        int shift = m + 3, dim = 2 * shift + 2;
        int[][] grid = new int[dim][dim];
        for (int i = 0; i <= 2 * n; i++)
            for (int j = 0; j <= 2 * m; j++) {
                if (((i + j) & 1) != 0)
                    continue;
                int x = (i + j) / 2, y = (i + 2 * shift - j) / 2;
                grid[x + 1][y + 1] = 1;
            }
        for (int i = 1; i < dim; i++)
            for (int j = 1; j < dim; j++)
                grid[i][j] += grid[i - 1][j] + grid[i][j - 1] - grid[i - 1][j - 1];
        for (int lx = 1; lx < dim; lx++)
            for (int rx = lx + 1; rx < dim; rx++)
                for (int ly = 1; ly < dim; ly++)
                    for (int ry = ly + 1; ry < dim; ry++) {
                        int area = (rx - lx + 1) * (ry - ly + 1);
                        int full = grid[rx][ry] - grid[rx][ly - 1] - grid[lx - 1][ry] + grid[lx - 1][ly - 1];
                        if (full != area)
                            continue;
                        int mi = (rx + ry - shift - 1) / 2, mj = (rx - ly + shift + 1) / 2;
                        if (mi < 1 || mj < 1 || mi > n || mj > m)
                            continue;
                        answer += (long) (n - mi + 1) * (m - mj + 1);
                    }
        return answer;
    }

    public static void main(String[] args) {
        System.out.println(solve(47, 43));
    }
}
