#include<bits/stdc++.h>
using namespace std;
#define int long long
const int maxn=25;
const int mod=1e9+7;
int f[maxn][maxn];
void init(){
for(int i=0;i<10;i++) f[1][i]=i;
for(int i=2;i<maxn;i++)
for(int j=0;j<10;j++)
for(int k=0;k<10;k++)
f[i][j]=(f[i][j]+(j+f[i-1][k])+mod)%mod;
}
int dp(int num){
int res=0;
vector<int> g;
while(num) g.push_back(num%10),num/=10;
for(int i=g.size()-1;i>=0;i--){
int x=g[i];
for(int j=0;j<x;j++) res=(res+f[i+1][j]+mod)%mod;
for(int j=i;j>0;j--) res=(res+x*g[j-1]*(int)pow(10,j-1)+mod)%mod;
res=(res+x+mod)%mod;
}
return res%mod;
}
signed main(){
int t;
cin>>t;
init();
while(t--){
int l,r;
cin>>l>>r;
cout<<((dp(r)-dp(l-1))%mod+mod)%mod<<endl;
}
}
递推写法