P2260,WA50pts
#include<bits/stdc++.h>
#define INF 1e16
#define endl '\n'
#define PI acos(-1)
#define pb push_back
#define int long long
#define mem(x,v) memset(x,v,sizeof x)
using namespace std;
const int MOD = 19940417;
const int inv2 = 9970209;
const int inv6 = 3323403;
inline int read(){
register int x=0,f=1;register char c=getchar();
while(c>'9'||c<'0'){if(c=='-')f=-1;c=getchar();}
while(c>='0'&&c<='9')x=(x<<1)+(x<<3)+(c^48),c=getchar();
return x*f;
}
int n,m,sum1,sum2,sum3,ans;
int Sumn1(int x){return x*(x+1)%MOD*inv2%MOD;}
int Sumn2(int x){return x*(x+1)%MOD*(2*x+1)%MOD*inv6%MOD;}
signed main(){
ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
cin>>n>>m,sum1=n*n%MOD,sum2=m*m%MOD,sum3=n*n%MOD*m%MOD;
if(n>m)swap(n,m);
for(int l=1,r=1;l<=n;l=r+1){
r=(n/(n/l));
sum1=(sum1-(Sumn1(r)-Sumn1(l-1)+MOD)%MOD*(n/l)%MOD+MOD)%MOD;
}
for(int l=1,r=1;l<=m;l=r+1){
r=(m/(m/l));
sum2=(sum2-(Sumn1(r)-Sumn1(l-1)+MOD)%MOD*(m/l)%MOD+MOD)%MOD;
}
for(int l=1,r=1;l<=n;l=r+1){
r=min({(n/(n/l)),(m/(m/l)),n});
int f1,f2;
f1=(Sumn1(r)-Sumn1(l-1)+MOD)%MOD*((n/l)*m%MOD+(m/l)*n%MOD)%MOD;
f2=(Sumn2(r)-Sumn2(l-1)+MOD)%MOD*(n/l)%MOD*(m/l)%MOD;
sum3=(sum3-f1+f2+MOD)%MOD;
}
ans=(sum1*sum2%MOD-sum3+MOD)%MOD;
cout<<ans;
return 0;
}