#include<bits/stdc++.h>
#define ll long long
#define reg register
#define db double
#define il inline
using namespace std;
int n,m;
int mu[10000005],prime[10000005],tot;
bool vis[10000005];
ll pre[100000005];
const int mod=20101009;
int main(){
mu[1]=1;
cin>>n>>m;
if(n>m)swap(n,m);
for(int i=2;i<=m;i++){
if(!vis[i]){
prime[++tot]=i;
mu[i]=-1;
}
for(int j=1;j<=tot&&prime[j]*i<=m;j++){
if(i%prime[j]==0){
vis[prime[j]*i]=1;
mu[prime[j]*i]=0;
}else{
vis[prime[j]*i]=1;
mu[prime[j]*i]=-mu[i];
}
}
}
for(int i=1;i<=n;i++){
pre[i]=mu[i]*i*i%mod;
pre[i]+=pre[i-1];pre[i]%=mod;
}
ll ans=0;
for(ll d=1;d<=n;d++){
for(ll k=1;k<=n/d;k++){
ll i=n/(d*k),j=m/(d*k);
int r=min(n/i,m/j);
ans+=d*(pre[r]-pre[k-1])*(i+1)*i/2%mod*j*(j+1)/2%mod;
k=r;
}
}
cout<<ans;
return 0;
}