#include <bits/stdc++.h>
using namespace std;
int ar[4010][4010];
int main(int argc, char** argv) {
  long long w, h;
  cin >> w >> h;
  ++w;
  ++h;
  long long evenx = w / 2 + w % 2;
  long long oddx = w / 2;
  long long eveny = h / 2 + h % 2;
  long long oddy = h / 2;
  long long ans = 0;
  ans = (ans + eveny * eveny * eveny) % 1000000007ll;
  ans = (ans * w) % 1000000007ll;
  ans = (ans * w) % 1000000007ll;
  ans = (ans * w) % 1000000007ll;
  long long ans1 = 0;
  ans1 = (ans1 + eveny * eveny * oddy * 3ll) % 1000000007ll;
  ans1 = (ans1 * ((oddx * oddx * oddx) % 1000000007ll +
                  (evenx * evenx * evenx) % 1000000007ll)) %
         1000000007ll;
  ans = (ans + ans1) % 1000000007ll;
  ans1 = 0;
  ans1 = (ans1 + eveny * eveny * oddy * 3ll) % 1000000007ll;
  ans1 = (ans1 * ((oddx * oddx * evenx) % 1000000007ll +
                  (evenx * evenx * oddx) % 1000000007ll)) %
         1000000007ll;
  ans = (ans + ans1) % 1000000007ll;
  ans1 = 0;
  ans1 = (ans1 + eveny * oddy * oddy * 3ll) % 1000000007ll;
  ans1 = (ans1 * ((oddx * oddx * oddx) % 1000000007ll +
                  (evenx * evenx * evenx) % 1000000007ll)) %
         1000000007ll;
  ans = (ans + ans1) % 1000000007ll;
  ans1 = 0;
  ans1 = (ans1 + eveny * oddy * oddy * 3ll) % 1000000007ll;
  ans1 = (ans1 * ((oddx * oddx * evenx) % 1000000007ll +
                  (evenx * evenx * oddx) % 1000000007ll)) %
         1000000007ll;
  ans = (ans + ans1) % 1000000007ll;
  ans1 = 0;
  ans1 = (ans1 + oddy * oddy * oddy) % 1000000007ll;
  ans1 = (ans1 * ((w * w * w) % 1000000007ll)) % 1000000007ll;
  ans = (ans + ans1) % 1000000007ll;
  ans1 = 0;
  ans1 = (w * h) % 1000000007ll;
  ans1 = (ans1 + w * h * (w * h - 1) * 3ll) % 1000000007ll;
  ans = (ans - ans1 + 2ll * 1000000007ll) % 1000000007ll;
  ar[0][0] = 1;
  ans1 = 0;
  for (int i = 0; i < w + 1; ++i)
    for (int j = 0; j < h + 1; ++j)
      if (!ar[i][j]) {
        long long ki = i, kj = j;
        long long n = 0;
        while (ki < w && kj < h) {
          ++n;
          ans1 = (ans1 + (n - 1) * (w - ki) * (h - kj) * 6ll) % 1000000007ll;
          if (ki && kj)
            ans1 = (ans1 + (n - 1) * (w - ki) * (h - kj) * 6ll) % 1000000007ll;
          ar[ki][kj] = 1;
          ki += i;
          kj += j;
        }
      }
  ans = (ans - ans1 + 2ll * 1000000007ll) % 1000000007ll;
  cout << ans << endl;
  return 0;
}
