using ll=long long;
#include<cstdio>
#include<iomanip>
#include<iostream>
#define int long long
#define N 10000001
#define mod 20101009
using namespace std;
int n,m,mu[N],p[N],qzh[N];
bool not_p[N];
ll f(int x,int y){
return 1ll*x*(x+1)/2%mod*1ll*y*(y+1)/2%mod;
}
ll Sum(int x,int y){
ll ans=0;
for(int i=1,j;i<=min(x,y);i=j+1){
j=min(x/(x/i),y/(y/i));
ans=(ans+(qzh[j]-qzh[i-1]+mod)%mod*f(x/i,y/i)%mod)%mod;
}
return ans;
}
ll solve(int x,int y){
ll ans=0;
for(int i=1,j;i<=min(x,y);i=j+1){
j=min(x/(x/i),y/(y/i));
ans=(ans+1ll*(j-i+1)%mod*(i+j)%mod/2*Sum(x/i,y/i)%mod)%mod;
}
return ans;
}
signed main(){
scanf("%lld%lld",&n,&m);
if(n>m)swap(n,m);
mu[1]=1;
for(int i=2;i<N;i++){
if(!not_p[i]){
p[++p[0]]=i;
mu[i]=-1;
}
for(int j=1;j<=p[0];j++){
if(i*p[j]>N)break;
not_p[i*p[j]]=1;
if(i%p[j]==0){
mu[i*p[j]]=0;
break;
}
mu[i*p[j]]=-mu[i];
}
}
for(int i=1;i<N;i++)qzh[i]=(qzh[i-1]+1ll*(mu[i]+mod)*i*i%mod)%mod;
printf("%lld",solve(n,m));
}