def gojohou(a, b): x1, x2 = int(a), int(b) if x1 < x2: tmp = x1 x1 = x2 x2 = tmp if x2 == 0: return x1 while x2 != 0: tmp = x2 x2 = x1 % x2 x1 = tmp return x1 def naname(wid, hei): if gojohou(wid, hei) == 1: if (wid == 0)or(hei == 0): return 1 else: return 2 return 0 def count(WMAX, HMAX): ans = 0 for a in range(WMAX): for b in range(HMAX): x = WMAX - a y = HMAX - b ans += naname(a, b) * x * y return ans while True: xy = input().split() z = count(int(xy[0]), int(xy[1])) % (1000000000 + 7) print(z)