#include <iostream>
#define MOD 1000000007
using namespace std;
int main() {
int t;
cin>>t;
while(t--)
{
long long n,t,d,hash,temp,tempn,digit,carry,add,temp_digit=0,digsum=0;
cin>>n>>d;
long long no=0;
temp=n;
while(temp--)
{
no=no*10+d;
}
temp=no*d;
//cout<<temp;
hash=0;
tempn=n;
add=0;
carry=0;
digit=0;
while(tempn--)
{
temp_digit=temp%10;
temp=temp/10;
digsum=digsum+temp_digit;
add+=temp_digit+carry;
if(add>=10)
{
digit=add%10;
carry=add/10;
}
else{
digit=add;
carry=0;
}
//cout<<digit<<" ";
hash=(23*hash+digit)%MOD;
}
digsum=digsum+temp;
tempn=n;
temp=no*d;
while(tempn--)
{
temp_digit=temp%10;
temp=temp/10;
digsum-=temp_digit;
if((digsum+carry)>=10)
{
digit=(digsum+carry)%10;
carry=(digsum+carry)/10;
}
else{
digit=digsum+carry;
carry=0;
}
if(digsum!=0)
{
//cout<<digit<<" ";
hash=(23*hash+digit)%MOD;
}
//cout<<hash<<" ";
}
cout<<hash<<endl;
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojZGVmaW5lIE1PRCAxMDAwMDAwMDA3CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgbWFpbigpIHsKCWludCB0OwoJY2luPj50OwoJd2hpbGUodC0tKQoJewoJCWxvbmcgbG9uZyBuLHQsZCxoYXNoLHRlbXAsdGVtcG4sZGlnaXQsY2FycnksYWRkLHRlbXBfZGlnaXQ9MCxkaWdzdW09MDsKCQljaW4+Pm4+PmQ7CgkJbG9uZyBsb25nIG5vPTA7CgkJdGVtcD1uOwoJCXdoaWxlKHRlbXAtLSkKCQl7CgkJCW5vPW5vKjEwK2Q7CgkJfQoJCXRlbXA9bm8qZDsKCQkvL2NvdXQ8PHRlbXA7CgkJaGFzaD0wOwoJCXRlbXBuPW47CgkJYWRkPTA7CgkJY2Fycnk9MDsKCQlkaWdpdD0wOwoJCXdoaWxlKHRlbXBuLS0pCgkJewoJCQl0ZW1wX2RpZ2l0PXRlbXAlMTA7CgkJCXRlbXA9dGVtcC8xMDsKCQkJZGlnc3VtPWRpZ3N1bSt0ZW1wX2RpZ2l0OwoJCQlhZGQrPXRlbXBfZGlnaXQrY2Fycnk7CgkJCWlmKGFkZD49MTApCgkJCXsKCQkJCWRpZ2l0PWFkZCUxMDsKCQkJCWNhcnJ5PWFkZC8xMDsKCQkJfQoJCQllbHNlewoJCQkJZGlnaXQ9YWRkOwoJCQkJY2Fycnk9MDsKCQkJfQoJCQkvL2NvdXQ8PGRpZ2l0PDwiICI7CgkJCWhhc2g9KDIzKmhhc2grZGlnaXQpJU1PRDsKCQl9CgkJZGlnc3VtPWRpZ3N1bSt0ZW1wOwoJCXRlbXBuPW47CgkJdGVtcD1ubypkOwoJCXdoaWxlKHRlbXBuLS0pCgkJewoJCQl0ZW1wX2RpZ2l0PXRlbXAlMTA7CgkJCXRlbXA9dGVtcC8xMDsKCQkJZGlnc3VtLT10ZW1wX2RpZ2l0OwoJCQlpZigoZGlnc3VtK2NhcnJ5KT49MTApCgkJCXsKCQkJCWRpZ2l0PShkaWdzdW0rY2FycnkpJTEwOwoJCQkJY2Fycnk9KGRpZ3N1bStjYXJyeSkvMTA7CgkJCX0KCQkJZWxzZXsKCQkJCWRpZ2l0PWRpZ3N1bStjYXJyeTsKCQkJCWNhcnJ5PTA7CgkJCX0KCQkJCgkJCWlmKGRpZ3N1bSE9MCkKCQkJewoJCQkJLy9jb3V0PDxkaWdpdDw8IiAiOwoJCQkJaGFzaD0oMjMqaGFzaCtkaWdpdCklTU9EOwoJCQl9CgkJCS8vY291dDw8aGFzaDw8IiAiOwoJCX0KCQljb3V0PDxoYXNoPDxlbmRsOwoJfQoJcmV0dXJuIDA7Cn0=