#include<iostream> #include<cstdio> #define MOD (20101009) #define g(x, y) ((((ll)(x + 1) * (x) / 2 % MOD) * ((ll)(y + 1) * (y) / 2 % MOD)) % MOD) using namespace std; const int N = 1e7 + 5; typedef long long ll;
bool st[N]; int prime[N], mu[N]; ll s[N];
void init() { int tot = 0; mu[1] = 1; for (int i = 2; i < N; i++) { if (!st[i]) prime[++tot] = i, mu[i] = -1; for (int j = 1; i * prime[j] < N; j++) { st[i * prime[j]] = true; if (i % prime[j] == 0) break; mu[i * prime[j]] = -mu[i]; } } for (int i = 1; i < N; i++) s[i] = ((ll)s[i - 1] + (ll)mu[i] * i * i + MOD) % MOD; }
ll sum(int n, int m) { int k = min(n, m); ll res = 0; for (int l = 1, r; l <= k; l = r + 1) { r = min(k, min(n / (n / l), m / (m / l))); res = (res + (ll)(s[r] - s[l - 1] + MOD) * g(n / l, m / l) % MOD) % MOD; } return res; }
int main() { init(); int n, m; scanf("%d%d", &n, &m); int k = min(n, m); ll res = 0; for (int l = 1, r; l <= k; l = r + 1) { r = min(k, min(n / (n / l), m / (m / l))); res += (ll)(l + r) * (r - l + 1) / 2 * sum(n / l, m / l); res %= MOD; } printf("%lld", res); return 0; }