#include<bits/stdc++.h>usingnamespace std;#define re register#define F first#define S secondtypedeflonglong ll;typedef pair<int,int> P;constint N =1e7+5, M =1e7+5, mod =20101009;constint INF =0x3f3f3f3f;inlineintread(){int X =0,w =0;char ch =0;while(!isdigit(ch)){w |= ch =='-';ch =getchar();}while(isdigit(ch)) X =(X <<3)+(X <<1)+(ch ^48),ch =getchar();return w ?-X : X;}int p[N], mu[N];
ll sum[N];bool vis[N];int n, m;voidinit(){int cnt =0, k =min(n, m); mu[1]=1;for(int i =2; i <= k; i++){if(!vis[i]) p[++cnt]= i, mu[i]=-1;for(int j =1; j <= cnt && i * p[j]<= k; j++){
vis[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++) sum[i]=(sum[i -1]+1ll* i * i % mod *(mu[i]+ mod)% mod)% mod;}
ll get(int n,int m){return(1ll* n *(n +1)/2% mod)*(1ll* m *(m +1)/2% mod)% mod;}
ll solsum(int n,int m){
ll ans =0;for(int i =1, j; i <=min(n, m); i = j +1){
j =min(n /(n / i), m /(m / i));
ans =(ans +1ll*(sum[j]- sum[i -1]+ mod)% mod *get(n / i, m / i)% mod)% mod;}return ans;}
ll solve(int n,int m){
ll ans =0;for(int i =1, j; i <=min(n, m); i = j +1){
j =min(n /(n / i), m /(m / i));
ans =(ans +1ll*(j - i +1)*(i + j)/2% mod *solsum(n / i, m / i)% mod)% mod;}return ans;}intmain(){
n =read(), m =read();init();printf("%lld\n",solve(n, m));return0;}