D. Маленький Слоник и треугольник
ограничение по времени на тест
3 секунды
ограничение по памяти на тест
256 мегабайт
ввод
stdin
вывод
stdout

Маленький Слоник играет с декартовой системой координат. Больше всего ему нравится играть с целочисленными точками. Под целочисленной точкой Маленький Слоник подразумевает пару целых чисел (xy) таких, что 0 ≤ x ≤ w и 0 ≤ y ≤ h. Таким образом Маленький Слоник знает только (w + 1)·(h + 1) различных целочисленных точек.

Маленький Слоник хочет нарисовать треугольник с вершинами в целочисленных точках, площадь которого является целым положительным числом. Для этого ему нужно найти количество троек точек, которые образуют такой треугольник. При этом порядок точек в тройке имеет значение, то есть тройка точек (0;0), (0;2), (2;2) не равна тройке (0;2), (0;0), (2;2).

Помогите Маленькому Слонику найти количество троек целочисленных точек, которые образуют невырожденный треугольник с целочисленной площадью.

Входные данные

В единственной строке записано два целых числа w и h (1 ≤ w, h ≤ 4000).

Выходные данные

В единственную строку выходных данных выведите целое число — остаток от деления ответа на задачу на 1000000007 (109 + 7).

Примеры
Входные данные
2 1
Выходные данные
36
Входные данные
2 2
Выходные данные
240