#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=1e7+1,mod=20101009;
int T,n,m,sum[N],G[N],tot,prim[N],mu[N],ans,cot;
bitset<N>vis;
void miu(int n) {
mu[1] = 1;
for (int i = 2; i <= n; i++) {
if (!vis[i])mu[prim[++tot] = i] = -1;
for (int j = 1; j <= tot && i * prim[j] <= n; j++) {
vis[i * prim[j]] = 1;
if (i % prim[j] == 0) {
mu[i * prim[j]] = 0;
break;
} else mu[i * prim[j]] = mu[i] * (-1);
}
}
for(int i=1;i<=n;i++){
if(mu[i]){
for(int j=i;j<=n;j+=i)G[j]=(G[j]+mu[i]*i)%mod;
}
}
for(int i=1;i<=n;i++){
sum[i]=sum[i-1]+i;
sum[i]%=mod;
}
}
signed main(){
ios::sync_with_stdio(0);
cin>>n>>m;
miu(max(n,m));
for(int i=1;i<=min(n,m);i++){
cot=(sum[n/i]*sum[m/i])%mod;
cot*=(G[i]);
cot%=mod;
cot*=i;
cot%=mod;
ans+=cot;
ans%=mod;
}
cout<<(ans%mod+mod)%mod;
return 0;
}