1 #include<bits/stdc++.h>
2 #define ll long long
3 #define R register
4 using namespace std;
5 const int N=10000010,mod=100000009;
6 int n,m,p[N],tot;
7 ll f[N];
8 bool isp[N];
9 int read(){
10 int x=0;char c=0;
11 while(c<'0'||c>'9') c=getchar();
12 while(c>='0'&&c<='9') x=(x<<3)+(x<<1)+c-48,c=getchar();
13 return x;
14 }
15 void getf(int lim){
16 f[1]=1;
17 for(R int i=2;i<=lim;i++){
18 if(!isp[i]) p[++tot]=i,f[i]=(1LL*(1-i)*i%mod+mod)%mod;
19 for(R int j=1;j<=tot&&1LL*p[j]*i<=lim;j++){
20 isp[i*p[j]]=1;
21 if(i%p[j]){f[i*p[j]]=f[i]*f[p[j]]%mod;}
22 else{
23 f[i*p[j]]=f[i]*p[j]%mod;
24 break;
25 }
26 }
27 }
28 for(int i=2;i<=lim;i++) f[i]=(f[i]+f[i-1])%mod;
29 return;
30 }
31 void solve(){
32 n=read(),m=read();
33 if(n>m) swap(n,m);
34 R int l=1,r;
35 ll ans=0;
36 while(l<=n){
37 r=min(n/(n/l),m/(m/l));
38 ll temp=(1LL*(n/l+1)*(n/l)/2%mod)*(1LL*(m/l+1)*(m/l)/2%mod)%mod;
39 ans=((ans+temp*(f[r]-f[l-1]))%mod+mod)%mod;
40 l=r+1;
41 }
42 printf("%lld\n",ans);
43 return;
44 }
45 int main(){
46 getf(10000000);
47 int T;
48 T=read();
49 while(T--) solve();
50 return 0;
51 }