#include<bits/stdc++.h>
using namespace std;
const int mod=1e9+7;
unsigned long long n,m;
unsigned long long ans[11];
unsigned long long ans1[11];
unsigned long long num[3][20];
unsigned long long num1[3][20];
unsigned long long op=0;
unsigned long long suq=m;
unsigned long long kk=10;
unsigned long long le=1;
unsigned long long len=1;
unsigned long long su=n;
unsigned long long k=10;
int main(){
int t;
cin>>t;
while(t--){
memset(ans,0,sizeof(ans));
memset(ans1,0,sizeof(ans1));
memset(num,0,sizeof(num));
memset(num1,0,sizeof(num1));
op=0;
cin>>n>>m;
n-=1;
len=1;
su=n;
k=10;
while(n/10!=0){
num[0][len]=n%10;
n/=10;
num[1][len]=n;
num[2][len]=su-num[1][len]*k-num[0][len]*k/10;
len++;
k=k*10;
}
num[0][len]=n;
num[1][len]=0;
num[2][len]=su-k/10*n;
for(unsigned long long i=1; i<=len; i++){
for(unsigned long long j=0; j<=9; j++){
ans[j]+=num[1][i]*pow(10,i-1);
if(j==num[0][i]){
ans[j]+=num[2][i]+1;
}
if(j<num[0][i]&&j!=0){
ans[j]+=pow(10,i-1);
}
}
}
suq=m;
kk=10;
le=1;
while(m/10!=0){
num1[0][le]=m%10;
m/=10;
num1[1][le]=m;
num1[2][le]=suq-num1[1][le]*kk-num1[0][le]*kk/10;
le++;
kk=kk*10;
}
num1[0][le]=m;
num1[1][le]=0;
num1[2][le]=suq-kk/10*m;
for(unsigned long long i=1; i<=le; i++){
for(unsigned long long j=0; j<=9; j++){
ans1[j]+=num1[1][i]*pow(10,i-1);
if(j<num1[0][i]&&j>0){
ans1[j]+=pow(10,i-1);
}
if(j==num1[0][i]){
ans1[j]+=num1[2][i]+1;
}
}
}
for(unsigned long long i=1; i<=9; i++){
op=(op%mod+(ans1[i]-ans[i]+mod*2)%mod*i%mod+mod*2)%mod;
}
op=(op+2*mod)%mod;
cout<<op%mod<<endl;
}
return 0;
}