#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
#define int long long
const int N=1e6+10;
const int mod=1e9+7;
int t;
int l,r;
int q[N];
int dp[200][200];
int dfs(int poj,int sum,bool limit)
{
if(!poj)
return sum;
if(!limit&&dp[poj][sum]>=0)
return dp[poj][sum];
int ans=0;
int up=limit?q[poj]:9;
for(int i=0;i<=up;i++)
ans=(ans+dfs(poj-1,sum+i,limit&&i==q[poj])%mod)%mod;
if(!limit)
return dp[poj][sum]=ans;
else
return ans;
}
int solve(int x)
{
int cnt=0;
while(x)
{
q[++cnt]=x%10;
x/=10;
}
return dfs(cnt,0,1)%mod;
}
signed main()
{
memset(dp,-1,sizeof dp);
cin>>t;
while(t--)
{
cin>>l>>r;
cout<<(solve(r)-solve(l-1)+mod)%mod<<endl;
}
return 0;
}