#include<bits/stdc++.h>
using namespace std;
#define int long long
const int mod = 19940417;
int fastpow(int a, int b)
{
int res = 1;
while (b) {
if (b & 1) {
res = (res * a) % mod;
}
a = (a * a) % mod;
b >>= 1;
}
return res;
}
int calc(int x)
{
return (x * (x + 1) / 2) % mod;
}
int calcc(int x)
{
return (((x * (x + 1)) % mod * (2 * x + 1)) % mod * 3323403) % mod;
}
signed main()
{
freopen("modmuladd.in", "r", stdin);
freopen("modmuladd.out", "w", stdout);
int n, m;
cin >> n >> m;
if (n > m) {
swap(n, m);
}
int ans1 = 0;
for (int l = 1; l <= n; ) {
int r = n / (n / l);
int d = n / l;
ans1 = (ans1 + mod + ((calc(r) - calc(l - 1)) * d) % mod) % mod;
l = r + 1;
}
ans1 = (n * n % mod + mod - ans1) % mod;
int ans2 = 0;
for (int l = 1; l <= m; ) {
int r = m / (m / l);
int d = m / l;
ans2 = (ans2 + mod + ((calc(r) - calc(l - 1)) * d) % mod) % mod;
l = r + 1;
}
ans2 = (m * m % mod + mod - ans2) % mod;
int ans = ans1 * ans2 % mod;
int ans3 = 0;
for (int l = 1; l <= n; ) {
int r = min(n / (n / l), m / (m / l));
int d1 = n / l;
int d2 = m / l;
int b = ((calc(r) - calc(l - 1) + mod) % mod * (d1 * m % mod + d2 * n % mod)) % mod;
int c = (((calcc(r) - calcc(l - 1) + mod) % mod * d1) % mod * d2) % mod;
ans3 = (ans3 + (((r - l + 1) * n) % mod * m) % mod + mod - b + c) % mod;
l = r + 1;
}
ans = (ans - ans3 + mod) % mod;
cout << ans;
return 0;
}