记录
#include<iostream>
using namespace std;
typedef long long ll;
const ll mod = 1e9 + 7;
ll a,b,ans,dp[51],mi[51],ans1[51],ans2[51];
int t,A[51];
void Work(ll N,ll *Cnt)
{
int L = 0;
ll TmpN = N;
while(N)
{
A[++L] = N % 10;
N /= 10;
}
for(int i = L;i > 0;i--)
{
for(int j = 0;j < 10;j++)
Cnt[j] = (Cnt[j] + dp[i - 1] * A[i] % mod) % mod;
for(int j = 0;j < A[i];j++)
Cnt[j] = (Cnt[j] + mi[i - 1]) % mod;
Cnt[A[i]] = (Cnt[A[i]] + (TmpN % mi[i - 1] + 1) % mod) % mod;
Cnt[0] = (Cnt[0] - mi[i - 1] + mod) % mod;
}
}
int main()
{
cin >> t;
mi[0] = 1;
for(int i = 1;i <= 50;i++)
{
dp[i] = (10ll * dp[i - 1] % mod + mi[i - 1]) % mod;
mi[i] = 10ll * mi[i - 1] % mod;
}
while(t--)
{
ans = 0;
cin >> a >> b;
Work(b,ans1);
Work(a - 1,ans2);
for(int i = 1;i < 10;i++)
{
ans = (ans + i * ((ans1[i] - ans2[i] + mod) % mod) % mod) % mod;
ans1[i] = ans2[i] = 0;
}
cout << ans << '\n';
}
return 0;
}